मैं डीबग मोड में विजुअल स्टूडियो में यह सी # कोड चला रहा हूं:जब मेरा अपवाद स्थिर कन्स्ट्रक्टर में होता है तो विजुअल स्टूडियो एक अपवाद संदेश क्यों नहीं दिखाता है?
public class MyHandlerFactory : IHttpHandlerFactory
{
private static Dictionary<string, bool> myDictionary = new Dictionary<string, bool>();
static MyHandlerFactory()
{
myDictionary.Add("someKey",true);
myDictionary.Add("someKey",true); // fails due to duplicate key
}
}
स्थिर कन्स्ट्रक्टर के बाहर, जब मैं त्रुटि के साथ लाइन पर जाता हूं विजुअल स्टूडियो इसे हाइलाइट करता है और अपवाद के बारे में एक संदेश पॉप अप करता है। लेकिन स्थिर रचनाकार में मुझे ऐसा कोई संदेश नहीं मिला है। मैं लाइन-बाय-लाइन के माध्यम से कदम उठा रहा हूं, इसलिए मुझे पता है कि मैं उस रेखा पर जा रहा हूं और आगे नहीं।
यह क्यों है?
(मुझे यह नहीं पता कि मेरी कक्षा IHttpHandlerFactory मामलों को लागू करती है, लेकिन मैंने इसे केवल मामले में शामिल किया है।)
यह वीएस2005 है, नेट 2.0
संपादित करें: मुझे बस चाहिए जोड़ने के लिए, तथ्य यह है कि यह एक HttpHandler है मायने रखता है। चूंकि उत्तरों ने संकेत दिया है, डिफ़ॉल्ट व्यवहार आंतरिक अपवाद के बजाय TypeInitializationException को तोड़ना है। मैंने HttpHandler के बिना एक और उदाहरण का परीक्षण किया और देखा कि इस कार्यक्रम ने कक्षा का उपयोग करने वाली पहली पंक्ति को तोड़ने का कारण बना दिया। लेकिन इस मामले में तोड़ने के लिए मेरे कोड में कोई लाइन नहीं है, क्योंकि कक्षा को केवल मेरी वेब.कॉन्फिग फ़ाइल में निर्दिष्ट एक HttpHandler के रूप में जाना जाता था। इसलिए, यह अपवाद पर बिल्कुल नहीं टूट गया।
उत्तर में धन्यवाद के बारे में एक उत्कृष्ट चर्चा है। हालांकि, डीबग> अपवादों में जो विकल्प मैं देखता हूं ... "सी ++ अपवाद", "सामान्य भाषा रनटाइम अपवाद", "प्रबंधित डिबगिंग सहायक", "मूल रन-टाइम चेक" और "Win32 अपवाद" हैं। इनमें से एक के तहत "नेट अपवाद" है? मुझे यह नहीं मिला। –
@ टिम गुडमैन - ओओपीएस! मेरा मतलब था "आम भाषा रनटाइम अपवाद"। मैं अपना जवाब अपडेट करूंगा। –
आह हां, जब इसे आम भाषा रनटाइम अपवादों को फेंक दिया जाता है तो इसे तोड़ना पड़ता है क्योंकि यह आंतरिक अपवाद को तोड़ देता है। धन्यवाद। –