मैंने बहुत सारे लेख पढ़े हैं (और इसी तरह के कुछ अन्य प्रश्न जो स्टैकऑवरफ़्लो पर पोस्ट किए गए थे) कैसे और कब उपयोग करना है, इसके बारे में और मैंने उन्हें अच्छी तरह समझा। लेकिन फिर भी, मुझे समझ में नहीं आता है कि Debug.Assert
एक सादे अपवाद को फेंकने के बजाय मुझे किस तरह की प्रेरणा का उपयोग करना चाहिए । मेरा क्या मतलब है। .NET में एक असफल दावे के लिए डिफ़ॉल्ट प्रतिक्रिया "दुनिया को रोकना" है और उपयोगकर्ता को एक संदेश बॉक्स प्रदर्शित करना है। हालांकि इस तरह के व्यवहार को संशोधित किया जा सकता है, मुझे ऐसा करने के लिए बहुत कष्टप्रद और बेमानी लगता है, जबकि मैं इसके बजाय, बस एक उपयुक्त अपवाद फेंक सकता हूं। इस तरह, मैं अपवाद को फेंकने से ठीक पहले एप्लिकेशन के लॉग में आसानी से त्रुटि लिख सकता था, और इसके अलावा, मेरा आवेदन जरूरी नहीं कि फ्रीज हो।
तो, मुझे क्यों, यदि बिल्कुल, Debug.Assert
सादे अपवाद के बजाय उपयोग करना चाहिए ? एक मुखरता की जगह जहां यह सिर्फ "अवांछित व्यवहार" के सभी प्रकार का कारण नहीं हो सकता है, इसलिए मेरे दृष्टिकोण में, मैं वास्तव में अपवाद को फेंकने के बजाय जोर का उपयोग करके कुछ भी हासिल नहीं करता हूं। क्या आप मुझसे सहमत हैं, या मैं यहाँ कुछ याद कर रहा हूँ?
नोट: मैं पूरी तरह से समझता हूं कि "सिद्धांत रूप में" (डिबग बनाम रिलीज़, उपयोग पैटर्न आदि) में क्या अंतर है, लेकिन जैसा कि मैं इसे देखता हूं, मैं जोर देने के बजाय अपवाद फेंकना बेहतर होगा। चूंकि अगर किसी प्रोडक्शन रिलीज़ पर बग की खोज की जाती है, तो मैं अभी भी "जोर" को विफल करना चाहूंगा (आखिरकार, "ओवरहेड" हास्यास्पद रूप से छोटा है), इसलिए मैं इसके बजाय एक अपवाद फेंकना बेहतर होगा।
संपादित करें: जिस तरह से मैं इसे देखता हूं, यदि कोई मुखर विफल रहा है, तो इसका मतलब है कि आवेदन ने किसी प्रकार की भ्रष्ट, अप्रत्याशित स्थिति में प्रवेश किया है। इसलिए मैं निष्पादन क्यों जारी रखना चाहूंगा? इससे कोई फर्क नहीं पड़ता कि अनुप्रयोग डिबग या रिलीज़ संस्करण पर चलता है। दोनों के लिए समान है