2008-10-12 9 views
10

मुझे कुछ स्पष्ट याद आ रही है लेकिन क्या कोई संदर्भ है कि .NET में फ़ंक्शंस द्वारा अपवादों को फेंक दिया गया है और अपवाद क्यों फेंक दिया जा सकता है?मैं कैसे पता लगा सकता हूं कि .NET फ़ंक्शन द्वारा कौन से अपवाद फेंक दिए जा सकते हैं?

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

अभी मुझे मिला एकमात्र समाधान केवल उन लोगों को पकड़ने के लिए है जिन्हें मैं जानता हूं और फिर अपवाद प्रकार को पकड़ता हूं, लेकिन मैं यह जान सकूंगा कि किस प्रकार के अपवादों में मुझे चलाने की संभावना है और क्यों। मैंने सोचा होगा कि एमएसडीएन पुस्तकालय में इस प्रकार की जानकारी होगी, लेकिन मुझे इसे कहीं भी नहीं मिल रहा है। क्या मैं सिर्फ अंधा हूँ? क्या यह जानकारी कहीं और है?

संपादित करें: कुछ और विनिर्देश, अभी मैं उन अपवादों की तलाश में हूं जिन्हें XDocument.Load (स्ट्रिंग) फ़ंक्शन द्वारा फेंक दिया जा सकता है। ऐसा लगता है कि online documentation या ऑब्जेक्ट ब्राउज़र में कुछ भी प्रासंगिक नहीं है। क्या मुझे अब कुछ परीक्षण चलाने हैं और देखें कि मैं किस में दौड़ता हूं?

उत्तर

8

अच्छा सवाल है, आपके पास 20/20 दृष्टि है। सी #/.NET फेंक स्टेटमेंट को लागू नहीं करता है (यानी, अपवादों की जांच)।

जावा जैसी किसी भाषा से आने वाले किसी भी व्यक्ति को इसके बारे में आश्चर्य होने की संभावना है।

सी # के पिता एंडर्स हेजल्सबर्ग, this article/interview में सी # से चेक अपवाद छोड़ने के पीछे तर्क बताते हैं। यह एक अच्छा पढ़ा है।

उस लेख से, ऐन्डर्स कहते हैं:

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

इसलिए, मिच और मोनोऑक्साइड के रूप में, .NET FCL के लिए एमएसडीएन दस्तावेज़ प्रत्येक वर्ग के लिए प्रासंगिक अपवादों और प्रत्येक नामस्थान के भीतर अपवाद भी सूचीबद्ध करता है।

+0

मैं उस आलेख का एक लिंक शामिल करने जा रहा था, लेकिन इसे ढूंढ नहीं पाया - यह एक अच्छा पढ़ा गया है। +1 –

+0

कॉलेज में जावा और सी # काम करने से आ रहा है, मुझे लगता है कि यह एक चीज है जिसे मैं जावा से सबसे ज्यादा याद करता हूं, हालांकि निश्चित रूप से जब मैं कॉलेज में था और उत्पादन स्तर कोड पर काम करने से पहले यह महसूस किया गया था परेशानियों, मुझे यह जानने में वास्तव में मददगार लगता है कि अपेक्षाओं के अपवाद क्या हैं। – Davy8

1

.NET जावा में 'फेंकता' कीवर्ड जैसी कुछ भी लागू नहीं करता है, इसलिए ऑनलाइन एमएसडीएन दस्तावेज़ों की जांच करना आपकी सबसे अच्छी शर्त है।

संपादित करें: यदि आप नेमस्पेस डॉको (उदाहरण के लिए System.IO के लिए) देखते हैं तो यह संभावित फेंकने वाले अपवादों को सूचीबद्ध करता है।

+0

हालांकि यह सभी संभावनाएं नहीं हैं, क्योंकि फ़ंक्शंस अपवाद को अपने नामस्थान से नहीं फेंक सकता है। उदाहरण के लिए, ArgumentException, आदि –

2

यदि कोई फ़ंक्शन अपवाद फेंकता है, तो यह आमतौर पर ऑफ़लाइन सहायता पृष्ठ के नीचे या ऑब्जेक्ट ब्राउज़र में सूचीबद्ध होता है। यह ऑनलाइन एमएसडीएन लाइब्रेरी, for example, string.Contains() में फ़ंक्शंस को कॉल करने के तरीके के बारे में जानकारी के नीचे भी सूचीबद्ध है, इसे "अपवाद" के रूप में लेबल किया गया है।

आगे के रूप में, यह केवल कार्य, गुण, आदि है जो वास्तव में अपवाद फेंकते हैं, इसलिए इन चीजों को सामान्य दस्तावेज में शामिल नहीं किया जाता है, केवल उन कार्यों या एक्सेसर्स के लिए प्रलेखन में जो वास्तव में उन्हें फेंकते हैं, उदाहरण के रूप में दिया हुआ। आपकी सबसे अच्छी शर्त वीएस में ऑब्जेक्ट ब्राउज़र के चारों ओर एक कक्षा है जिसे आप रुचि रखते हैं।

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

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