Aprroach 1:पैरामीटर सत्यापन, या इसे असफल होने दें?
public static void SendMail(string from, string to, string subject, string body)
{
if(String.IsNullOrWhiteSpace(from))
throw new ArgumentNullOrWhiteSpaceException("from");
if(String.IsNullOrWhiteSpace(to))
throw new ArgumentNullOrWhiteSpaceException("to");
var msg = new MailMessage(from, to, subject, body) { IsBodyHtml = true };
using(var smtp = new SmtpClient())
smtp.Send(msg);
}
दृष्टिकोण 2:
public static void SendMail(string from, string to, string subject, string body)
{
var msg = new MailMessage(from, to, subject, body) { IsBodyHtml = true };
using(var smtp = new SmtpClient())
smtp.Send(msg);
}
मैं दृष्टिकोण 1 में पैरामीटर क्यों मान्य होता है, और न सिर्फ फेंक MailMessage
के लिए प्रतीक्षा एक अपवाद (दृष्टिकोण 2), मुझे बता रहा है कि मैंने एक खालीपारित किया हैया to
मूल्य, निर्माता के लिए?
तो मैं अपना अपवाद क्यों फेंक दूंगा?
आपका फ़ंक्शन एक ही पैरामीटर नामों के साथ मौजूदा कन्स्ट्रक्टर के चारों ओर एक छोटा सा रैपर प्रतीत होता है। ज्यादातर मामलों में, पास पैरामीटर और किसी भी आंतरिक फ़ंक्शन/विधि कॉल के बीच कुछ परिवर्तन होता है। आपका कॉलर पैरामीटर 'बार' के बारे में शिकायत करने वाले अपवाद को समझ नहीं सकता है जब उन्होंने केवल पैरामीटर' foo' पास किया था। –
http://stackoverflow.com/a/1102113/393487 –
मेरा मानना है कि "मैं अपना अपवाद क्यों फेंक दूंगा?" एक सवाल है कि आपको खुद से पूछना चाहिए। अगर आपको कारण नहीं दिख रहा है, तो ऐसा क्यों करें? वैसे भी MailMessage कन्स्ट्रक्टर अपवादों को फेंक देगा जो आपको वही चीजें बताते हैं जो कस्टम अपवाद करते हैं, इसलिए इस मामले में उन्हें रखना जरूरी नहीं है, लेकिन यह अधिक परिष्कृत मामलों में एक अलग मामला है, जहां आप जानना चाहते हैं कि अधिक विस्तार से क्या हो रहा है । –