2009-08-28 8 views
10

क्या कोई प्रगति या डीबगर विशेषता है जो डिबगर को किसी विशेष अपवाद को फेंकने की अनुमति नहीं देगी, भले ही डीबग के तहत >> अपवाद मेनू मैंने किसी भी सीएलआर अपवादों को फेंकने के दौरान इसे तोड़ने के लिए कहा है?विजुअल स्टूडियो में किसी भी तरह का एक विशिष्ट अपवाद फेंकने पर तोड़ने के लिए नहीं?

सामान्य रूप से विकास करते समय मुझे डिबगिंग करते समय अपवादों को तोड़ना पसंद है ताकि मैं तुरंत उनका निरीक्षण कर सकूं। कभी-कभी कुछ अलग-अलग मामले होते हैं जहां यह ज्ञात होता है कि कोड का यह ब्लॉक कभी-कभी अपवाद फेंकता है और मैंने इसे एक कोशिश-पकड़ के साथ संभाला है। the answer to this question देखें जहां सर्वसम्मति थी कि कोशिश-पकड़ सबसे सही स्थिति है।

मैं विधि पर एक विशेषता सेट करने में सक्षम होना चाहता हूं (System.Diagnostics.DebuggerHiddenAttribute के समान कुछ) जो विधि में फेंकने वाले किसी भी अपवाद को अनदेखा करता है।

बीटीडब्ल्यू, मैं वर्तमान में विजुअल स्टूडियो 2008 में इसका अनुभव कर रहा हूं, लेकिन मुझे लगता है कि या तो सभी संस्करणों या किसी के लिए कोई जवाब नहीं है।

उत्तर

9

प्रत्यक्ष उत्तर डीबग मेनू के अपवाद मेनू आइटम के अंतर्गत पाया जा सकता है। यह एक प्रति समाधान/परियोजना सेटिंग है। (टूल्स> विकल्प> डिबगिंग एक सिस्टम-व्यापी सेटिंग है।) सहायता विषय देखें विजुअल स्टूडियो डीबगर, कैसे करें: ब्रेक जब ब्रेक अपhttp://msdn.microsoft.com/en-us/library/d14azbfh.aspx पर विवरण के लिए तोड़ दिया जाता है। अपवाद संवाद आपको यह सेट करने की अनुमति देता है कि कौन से अपवाद फेंक दिए गए हैं या कौन से अपवाद डीबगर में टूट जाते हैं।

मुझे लगता है कि मुझे DebuggerStepThrough विशेषता से अधिक उपयोग मिलता है।

सामान्य तौर पर, मैं छोड़ने के डिफ़ॉल्ट के लिए अपवाद फेंक (डीबग> अपवाद उपयोगकर्ता के बिना क्रिया की जाँच की और अनियंत्रित फेंक) और तरीकों जहाँ मैं के माध्यम से कदम में कोई दिलचस्पी नहीं है और न ही मैं किसी भी अपवाद में दिलचस्पी है फेंके जाने के लिए DebuggerStepThrough विशेषता जोड़ें उस विधि के भीतर। मैं शायद ही कभी DebuggerHidden का उपयोग करता हूं, और लाइब्रेरी कोड में DebuggerNonUserCode के साथ और अधिक उपयोग प्राप्त करता हूं।

+0

'डीबग' >> 'अपवाद' वास्तव में वह मेनू है जिसे मैंने इसे सक्षम किया है (उपकरण एक टाइपो था)। मैं अपवाद के इस विशेष उदाहरण को छोड़कर सभी अपवादों को तोड़ना चाहता हूं (उदा। 'IOException' या कुछ अन्य आम अपवाद इसलिए मैं उन सभी को बंद नहीं कर सकता)। ऐसा लगता है कि DebuggerStepThroughAttribute वह उत्तर है जिसे मैं ढूंढ रहा था। मुझे नहीं लगता था कि यह अपवादों को भी प्रभावित करेगा। धन्यवाद! – mckamey

+1

अतिरिक्त जानकारी: डीबगरस्टेप केवल उस विधि में उठाए गए अपवादों को दबाता है। यह कॉल स्टैक में कम उठाए गए अपवाद को दबाएगा नहीं। –

+0

मुझे नहीं पता कि चीजें हाल ही में बदल गई हैं (वीएस2015 में, हो सकता है?) - लेकिन मेरे पास एक अपवाद है जो मेरी विधि में पकड़ा और संभाला गया है, और कोई अपवाद नहीं है - विधि में 'डीबगरस्टेपथ्रू' विशेषता है, लेकिन यह अभी भी बंद हो जाता है - (यद्यपि ढेर में एक स्तर ऊपर) - जब मैं एफ 10 दबाता हूं, तो यह सामान्य की तरह अगली पंक्ति में जाता है - लेकिन यह वहां क्यों रोक रहा है? इस विधि ने कुछ भी नहीं छोड़ा, लेकिन डीबगरस्टेप थ्रू इस तरह व्यवहार कर रहा है जैसे कि यह बुलबुला हुआ है ... - मैं उल्लेख किए गए कुछ अन्य विशेषताओं को आजमा सकता हूं। – BrainSlugs83

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