2011-04-12 17 views
5

मैं अपवादों के अवरोध का परीक्षण करता हूं, इसलिए मुझे thrown new NullReferenceException("myVar") जैसे विचारों पर विजुअल स्टूडियो ब्रेक की आवश्यकता नहीं है।अपवादों को फेंकते समय विजुअल स्टूडियो को तोड़ने से रोकें

मैं डीबग => अपवाद

enter image description here

हालांकि, वी.एस. अपवाद पर टूट जाता है के अंतर्गत निम्नलिखित है। मुझे क्या करना चाहिए?

पीएस।

आवेदन बिना क्रिया का अपवाद के लिए

, मैं "पकड़" उन्हें Application.UnhandledException में के रूप में निम्नलिखित का उपयोग कर:

''' <summary>Occurs when the application encounters an unhandled exception.</summary> ' 
Private Sub Application_UnhandledException(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.UnhandledExceptionEventArgs) Handles Me.UnhandledException 
    Dim message As String = String.Format("An application UnhandledException were thrown.{1}The application will now terminate.{1}'{0}'{1}{1}StackTrace:{1}{2}", e.Exception.Message, Environment.NewLine, e.Exception.StackTrace) 
    MessageBox.Show(message) 
End Sub 
+0

यदि संभव हो तो इसे पकड़ने का प्रयास करें? – lxcid

+0

यह केवल दिखाता है कि वीएस फेंकने पर सभी अपवादों को तोड़ नहीं देता है। व्यक्तिगत अपवादों की जांच की जाती है या नहीं, यह देखने के लिए आपको सीएलआर अपवाद नोड में ड्रिल करना होगा। – CodeNaked

+0

@CodeNaked: मैंने सत्यापित किया: System.NullReferenceException की जांच नहीं की गई है। – serhio

उत्तर

2

आप एक अपवाद है कि अपने कोड में कहीं भी नहीं संभाला है फेंक, तो दृश्य स्टूडियो जा रहा है तोड़ने के लिए। इसमें कोई अन्य विकल्प नहीं है: एक अनचाहे अपवाद था। विजुअल स्टूडियो के बाहर, एप्लिकेशन एक त्रुटि संदेश दिखाएगा और उपयोगकर्ता को सूचित करेगा कि एक अनचाहे अपवाद हुआ।

डीबग में आपके द्वारा देखे जाने वाले विकल्प -> अपवाद संवाद केवल आपको कॉन्फ़िगर करने की अनुमति देता है कि विजुअल स्टूडियो पर सभी अपवादों को तोड़ देता है, जिनमें बाद में आपके कोड में संभाला गया है। इन्हें अक्सर "प्रथम मौका" अपवाद के रूप में जाना जाता है।

इसके अलावा, आपको कभी भी NullReferenceException फेंकना नहीं चाहिए; यह रनटाइम अपवाद है जो रनटाइम फ्रेमवर्क के लिए आरक्षित है। इसके बजाय, आपको ArgumentNullException फेंकना चाहिए।

+0

मेरा ** पीएस ** देखें। आपकी टिप्पणी के लिए, हो सकता है कि आपके पास कारण हो, वैसे भी, एमएसडीएन सिर्फ 'नोट' को सूचित करता है कि एप्लिकेशन NullReferenceException अपवाद के बजाय ArgumentNullException अपवाद फेंकते हैं ... ' – serhio

4

जब मैंने वीएस -2010 का उपयोग करना शुरू किया तो मुझे भी यही समस्या थी। मेरे पास यूनिट परीक्षण हैं, जो अपवादों की अपेक्षा करते हैं, और मैं अपने कार्यों से अपवाद फेंक देता हूं। इन अपवादों को मेरी लाइब्रेरी के उपयोगकर्ता द्वारा संभाला जाना चाहिए। डीबग-> अपवाद संवाद में, मैंने सामान्य भाषा रनटाइम अपवादों के लिए उपयोगकर्ता-अनचाहे कॉलम के तहत चेक बॉक्स को अनचेक किया, और वीएस ने इन अपवादों को तोड़ना बंद कर दिया। वैसे, मुझे आपके द्वारा यहां जुड़े संवाद में दूसरा कॉलम दिखाई नहीं देता है।

+0

FYI, डिबगिंग विकल्प" बस मेरा कोड सक्षम करें (केवल प्रबंधित) "होना चाहिए अपवाद विंडो में "उपयोगकर्ता-अनचाहे" कॉलम देखने के लिए चेक किया गया। –

0

नीचे दी गई विधि विजुअल स्टूडियो 2015 में मेरे लिए काम करती है (एक समान प्रक्रिया VS2010 के लिए काम कर सकती है)।

दृश्य स्टूडियो documentation on managing exceptions with the debugger से लिया:

  1. अपवाद सेटिंग्स विंडो में, विंडो में राइट क्लिक करें और फिर कॉलम दिखाएँ का चयन करके संदर्भ मेनू खोलें। (यदि आपने जस्ट माई कोड बंद कर दिया है, तो आपको यह आदेश नहीं दिखाई देगा।)
  2. आपको अतिरिक्त क्रियाओं वाला दूसरा कॉलम देखना चाहिए। यह कॉलम तब प्रदर्शित होता है जब विशिष्ट अपवादों पर उपयोगकर्ता कोड द्वारा अनचाहे किया जाता है, जिसका अर्थ यह है कि यदि अपवाद उपयोगकर्ता कोड में नहीं किया जाता है लेकिन बाहरी कोड में संभाला जाता है तो डीबगर टूट नहीं जाता है।
  3. आप या तो किसी विशेष अपवाद के लिए इस सेटिंग को बदल सकते हैं (अपवाद का चयन करें, राइट-क्लिक करें, और उपयोगकर्ता कोड में अनचाहे होने पर जारी/चयन रद्द करें) या अपवादों की पूरी श्रेणी के लिए (उदाहरण के लिए, सभी सामान्य भाषा रनटाइम अपवाद)।
संबंधित मुद्दे

 संबंधित मुद्दे