2008-11-05 21 views
41

में कोई विधि क्या हो सकती है, यह पता लगाने का कोई तरीका है कि .NET कोड में किसी भी विधि द्वारा क्या अपवाद फेंक सकते हैं? आदर्श रूप में मैं देखना चाहता हूं कि क्या फेंक दिया जा सकता है और चुनें कि मैं कौन सा संभालना चाहता हूं। मुझे लगता है कि मैं जावा में फेंकने वाले खंड से प्राप्त जानकारी चाहता हूं।यह पता लगाना कि सी #

स्थिति यह है कि मैं नेटवर्क से किसी XML दस्तावेज़ पर एक linq क्वेरी कर रहा हूं और जानना चाहता हूं कि क्या गलत हो सकता है। मैं परावर्तक में असेंबली खोल सकता हूं और एक नज़र डाल सकता हूं लेकिन मैंने सोचा कि एक आसान तरीका हो सकता है।

उत्तर

42

.NET ने जावा जैसे अपवाद ("चेक") अपवाद नहीं किए हैं। Intellisense हो सकता है कि इस जानकारी को दिखाएं, यदि डेवलपर ने /// <exception.../> ब्लॉक जोड़ा है - लेकिन अंत में आप अपेक्षाओं से अधिक अपवाद हो सकते हैं (OutOfMemoryException, ThreadAbortException, TypeLoadException, आदि सभी काफी अप्रत्याशित रूप से हो सकते हैं)।

सामान्य रूप से, आपको यह पता होना चाहिए कि चीजों को गलत होने की क्या संभावना है, और आप वास्तव में कुछ उपयोगी कैसे कर सकते हैं। ज्यादातर मामलों में, सही व्यवहार अपवाद बबल अप को देना है (केवल संसाधनों को जारी करने के लिए "अंततः" कोड चला रहा है)।

एरिक लिपर्ट के इस विषय पर here पर एक अच्छा ब्लॉग है।

+0

धन्यवाद। एरिक लिपर्ट के ब्लॉग का लिंक भी वास्तव में सहायक था। :) – Helephant

0

जब तक आप बीसीएल कक्षाओं का उपयोग कर रहे हैं, वे सभी पूरी तरह से प्रलेखित हैं और इंटेलिजेंस इसलिए किसी विधि को फेंकने के लिए कोई अपवाद प्रदर्शित करता है। इसके अलावा (और दस्तावेज़ों को पढ़ना), मुझे लगता है कि कोई रास्ता नहीं है।

+0

ऐसे कई अपवाद हैं जिन्हें दस्तावेज नहीं किया गया है क्योंकि उनकी भविष्यवाणी नहीं की जा सकती है; और तब भी आप पूरी तरह से इंटेलिजेंस पर भरोसा नहीं कर सकते हैं। बीटीडब्ल्यू, डाउनवोट मुझसे नहीं था। –

+1

"कई अपवाद" जैसे टाइपलोड लोड अपवाद जो आप उल्लेख करते हैं वह सीएलआर से ही हो सकता है, तकनीकी रूप से बोल रहा है, या यहां तक ​​कि सीपीयू से भी। मुझे नहीं लगता कि किसी को भी उम्मीद और पकड़ने में दिलचस्पी है। दूसरी ओर .NET SDK अपवादों को सूचीबद्ध करता है जिन्हें बीसीएल विधियों द्वारा फेंक दिया जा सकता है ... – liggett78

+1

और वे सामान्य रूप से आप वास्तव में रुचि रखते हैं। – liggett78

8

मुझे लगता है कि Exception hunter StackOverflow पर इस बारे में एक अन्य लेख को पढ़ने के बाद यह जानकारी प्रदान कर सकते हैं लेकिन यह पैसे की लागत ...

+2

यह सॉफ़्टवेयर बंद कर दिया गया है। – froeschli

+3

यह अपवाद हंटर से कोई तुलना नहीं है, लेकिन यदि आप ऐसा करने का एक स्वतंत्र तरीका ढूंढ रहे हैं, तो मैंने यह जानकारी यहां प्राप्त करने का एक त्वरित तरीका लिखा है - https://github.com/stevesheldon/ExceptionReflector। अगर यह आपकी आवश्यकताओं को पूरा नहीं करता है तो फोर्क/अपडेट करने के लिए स्वतंत्र महसूस करें। –

1

, मुझे लगता है कि अन्य जवाब के ऊपर एक बने यह करने के लिए एक उपकरण लिखने के लिए, आप कर सकते हैं यहाँ GitHub से स्रोत कोड प्राप्त करें:

Exception Reflector

आप भी अधिक यहाँ पढ़ सकते हैं:

http://steves-rv-travels.com/archives/167

+0

मैंने इस लाइब्रेरी पर यह कोशिश की जिसे मैंने लिखा था System.et.Http, और मुझे सूची में उन अपवादों को नहीं दिख रहा है। क्या ऐसा इसलिए है क्योंकि यह एक एसिंक कॉल है, और एक समग्र अपवाद में लपेटा गया है? मैं .NET 4.5 का भी उपयोग कर रहा हूं, शायद यह अपराधी है। – aoetalks

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