मान लीजिए कि मेरे पास एक विधि है:
public void DoSomething(ISomeInterface someObject)
{
if(someObject == null) throw new ArgumentNullException("someObject");
someObject.DoThisOrThat();
}
मुझे यह विश्वास करने के लिए प्रशिक्षित किया गया है कि फेंकना ArgumentNullException
"सही" है, लेकिन एक "ऑब्जेक्ट संदर्भ एक वस्तु के उदाहरण के लिए सेट नहीं है" त्रुटि का मतलब है कि मेरे पास एक बग है।
क्यूं कर?
मुझे पता है कि अगर मैं someObject
बाद में इसके संदर्भ का उपयोग कर रहा था और इसका उपयोग कर रहा था , तो यह बेहतर है कि जब यह पास हो जाए, तो अशक्तता की जांच करें और जल्दी विफल हो जाएं। हालाँकि, अगर मैं इसे अगली पंक्ति में डाल रहा हूँ, तो हमें चेक क्यों करना चाहिए? यह एक अपवाद को एक तरह से या दूसरे को फेंकने वाला है।
संपादित करें :
यह सिर्फ मेरे लिए हुआ ... क्या सी + + जैसी भाषा से डीरेल्ड नल का डर है जो आपके लिए जांच नहीं करता है (यानी यह सिर्फ स्मृति स्थान शून्य + विधि ऑफसेट पर कुछ विधि निष्पादित करने की कोशिश करता है)?