हैं "फेंक" सवाल में बयान सही मायने में पहुँच योग्य नहीं किसी भी संभावित परिदृश्य के अंतर्गत है तो यह नष्ट कर दिया और के साथ प्रतिस्थापित किया जाना चाहिए: कोड पहुंचा जा सकता है
Debug.Fail("This should be unreachable; please find and fix the bug that caused this to be reached.");
तो एक इकाई परीक्षण लिखने कि उस परिदृश्य का परीक्षण करता है। सार्वजनिक-सुलभ तरीकों के लिए त्रुटि-रिपोर्टिंग परिदृश्य पूरी तरह वैध मान्य परिदृश्य हैं। आपको सभी इनपुट सही तरीके से, यहां तक कि खराब इनपुट को संभालना होगा। यदि एक अपवाद फेंकना सही बात है तो परीक्षण करें कि आप अपवाद फेंक रहे हैं।
अद्यतन: टिप्पणियों के मुताबिक, त्रुटि को हिट करने के लिए वास्तव में असंभव है और इसलिए कोड पहुंच योग्य नहीं है। लेकिन अब डीबग.फेल या तो पहुंच योग्य नहीं है, और यह संकलित नहीं होता है क्योंकि संकलक नोट करता है कि एक विधि जो एक मूल्य देता है, एक पहुंच योग्य अंत बिंदु है।
पहली समस्या वास्तव में एक समस्या नहीं होनी चाहिए; निश्चित रूप से कोड कवरेज उपकरण को पहुंचने योग्य डीबग-केवल कोड को अनदेखा करने के लिए कॉन्फ़िगर करने योग्य होना चाहिए। लेकिन दोनों समस्या पाश दोबारा लिख कर हल किया जा सकता:
public int FirstInvalidDigitPosition
{
get
{
int index = 0;
while(true)
{
Debug.Assert(index < this.positions.Length, "Attempt to get invalid digit position but there are no invalid digits!");
if (!this.positions[index].Valid) return index;
index++;
}
}
}
एक वैकल्पिक दृष्टिकोण ताकि आप पहली जगह में समस्या नहीं है कोड पुनर्निर्माण करने के लिए होगा:
public int? FirstInvalidDigitPosition {
get {
for (int index = 0; index < this.positions.Count; ++index) {
if (!this.positions[index].Valid) return index;
}
return null;
}
}
और अब आपको कॉलर को पहले AreThereInvalidDigits को कॉल करने की आवश्यकता नहीं है; किसी भी समय इस विधि को कॉल करने के लिए इसे कानूनी बनाएं। ऐसा करने के लिए सुरक्षित चीज की तरह लगता है। जब आप कुछ महंगे चेक नहीं करते हैं तो वे उड़ने के तरीके नाजुक, खतरनाक तरीकों से कॉल करने के लिए सुरक्षित हैं।
स्रोत
2010-08-20 21:59:42
केवल तथ्य यह है कि आप कहते हैं कि इसे निष्पादित नहीं किया जाना चाहिए और मुझे नहीं पहुंचाया जा सकता है "इसे निकालें"। आपने स्ट्रिंग को यहां प्राप्त करने के लिए अमान्य के रूप में मान्य कर दिया है, इसलिए आप जानते हैं कि संपत्ति कुछ वापस कर देगी। – Michael