मैं एक वस्तु पर आगे के प्रसंस्करण को रोकना चाहूंगा अगर यह शून्य है।
निम्नलिखित कोड में मैं जांचता हूं कि क्या वस्तु या तो शून्य है:
if (!data.Equals(null))
तथा
if (data != null)
हालाँकि, मैं एक NullReferenceException
पर प्राप्त करते हैं dataList.Add(data)
। यदि वस्तु अशक्त थी, तो उसे कभी भी प्रवेश नहीं करना चाहिए if
!
इस प्रकार, मैं पूछ रहा हूँ कि क्या यह जाँचने का उचित तरीका है कि क्या कोई वस्तु अशक्त है:
public List<Object> dataList;
public bool AddData(ref Object data)
bool success = false;
try
{
// I've also used "if (data != null)" which hasn't worked either
if (!data.Equals(null))
{
//NullReferenceException occurs here ...
dataList.Add(data);
success = doOtherStuff(data);
}
}
catch (Exception e)
{
throw new Exception(e.ToString());
}
return success;
}
यदि यह जाँचने का उचित तरीका है कि क्या वस्तु अशक्त है, तो मैं क्या गलत कर रहा हूँ (मैं NullReferenceException से बचने के लिए ऑब्जेक्ट पर आगे की प्रक्रिया को कैसे रोक सकता हूँ)?
!= null
अपने अशक्त चेक का उपयोग करना चाहिए । .Equals
हमेशा एक अपवाद फेंक देंगे यदि वस्तु अशक्त है।
throw e;
ज्यादा बेहतर नहीं है। throw;
दूसरी ओर ...
e.ToString()
एक स्ट्रिंग का उत्पादन करेगा जिसमें न केवल त्रुटि संदेश शामिल है, बल्कि उन सभी InnerExceptions
और स्टैक ट्रेस भी शामिल हैं। तो यह एक बहुत ही मोटा-भारी अपवाद संदेश है। यदि आप (सही तरीके से!) इस जानकारी को संरक्षित करना चाहते हैं, और इसे जहां रखना है, बस उपयोग करें throw;
।
throw e;
throw new Exception(e.ToString());