90

पहला मौका अपवाद वास्तव में क्या है? .NET प्रोग्राम में यह कहां और कहां से उत्पन्न होता है? और इसे उस असाधारण नाम से क्यों कहा जाता है (हम किस मौके के बारे में बात कर रहे हैं)?"पहला मौका अपवाद" क्या है?

उत्तर

66

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

+16

यह एक डीबगिंग अवधारणा से अधिक है; सी # रन-टाइम पर दो-पास अपवाद हैंडलिंग को देखने का सुविधाजनक माध्यम प्रदान नहीं करता है, लेकिन vb.net करता है। असल में, जब एक अपवाद फेंक दिया जाता है, तो रन-टाइम कॉल स्टैक को खोजकर शुरू होता है ताकि यह पता चल सके कि कोई इसे पकड़ने वाला कौन है। यह प्रक्रिया * किसी भी 'आखिरकार' ब्लॉक चलाने से पहले * होती है। एक बार सिस्टम ने फैसला किया कि कौन अपवाद पकड़ने जा रहा है (और यह निर्धारित करता है कि कोई वास्तव में जा रहा है), सिस्टम ढेर को अनदेखा करना शुरू कर देगा। ध्यान दें कि यदि एक अपवाद को 'अंत में' ब्लॉक से फेंक दिया गया है ... – supercat

+13

... वह कोड जो मूल अपवाद को पकड़ने की उम्मीद कर रहा था, ऐसा नहीं कर सकता है; कई अजीब कोने के मामले हैं। – supercat

+4

ऐसा तब होता है जब आपने सभी _thrown_ अपवादों (केवल अनचाहे अपवादों) को तोड़ने के लिए डीबगर को कॉन्फ़िगर नहीं किया है, या यदि आप कुछ कथन में "कदम" डालते हैं।आप संदेश देखते हैं ** YourApp.exe ** में टाइप 'foo' का पहला मौका अपवाद हुआ। आप अभी भी जारी रख सकते हैं (एफ 5) या आगे कदम (एफ 11)। फिर यदि इसके लिए 'पकड़' है, तो नियंत्रण वहां जाता है। यदि कोई 'पकड़' ब्लॉक नहीं है, तो आपको "दूसरा मौका" ब्रेक मिलता है, इस बार संदेश ** ** YourApp.exe ** में 'foo' प्रकार का एक अनचाहे अपवाद हुआ। यहां से, जारी रखने या आगे बढ़ने की कोशिश सफल नहीं होगी। –

15

अपवाद फेंकने पर पहली मौका अपवाद अधिसूचनाएं उठाई जाती हैं। दूसरी मौका अधिसूचनाएं तब होती हैं जब इसे पकड़ा नहीं जाता है। (संभावना - डीबगर में कोड में तोड़ने के अवसर के रूप में)।

First and second chance exception handling

4

मैं सिर्फ डिबगर उपयोग शुरू कर दिया है और इस में भाग गया। मेरे शोध में, मैंने एमएसडीएन ब्लॉग पोस्ट What is a First Chance Exception? पाया जो इसे मेरे लिए साफ़ कर दिया।

मेरे लिए ब्लॉग पोस्ट से बड़ी निकासी यह है कि यह डीबगर को अधिसूचना को संदर्भित करता है, और कुछ भी मेरे कोड को संभालने की आवश्यकता नहीं है, और सबसे महत्वपूर्ण बात यह है कि "सबसे पहले मौका अपवाद संदेश का मतलब यह नहीं है कि वहां कोड में एक समस्या है। "

+0

कृपया उस लिंक से आपको जो उपयोगी मिले, उसका एक अंश (* पूरा लेख * नहीं) डालें। पहले वाला लिंक केवल उसी लिंक के साथ उत्तर दिया गया था जिसे हटा दिया गया था। –

+0

मेरे लिए बड़े अधिग्रहण यह है कि यह डीबगर को अधिसूचना को संदर्भित करता है, और कुछ ऐसा नहीं जो मेरे कोड को संभालने की आवश्यकता होगी, और सबसे महत्वपूर्ण बात यह है कि "पहली मौका अपवाद संदेश का मतलब यह नहीं है कि कोड में कोई समस्या है।" – codingatty

+0

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

0

जब कोई एप्लिकेशन डीबग किया जा रहा है, तो अपवाद का सामना होने पर डीबगर को अधिसूचित किया जाता है। इस बिंदु पर, एप्लिकेशन निलंबित कर दिया गया है और डीबगर निर्णय लेता है कि अपवाद को कैसे संभाला जाए। इस तंत्र के माध्यम से पहला पास "पहला मौका" अपवाद कहा जाता है।

डीबगर की कॉन्फ़िगरेशन के आधार पर, यह या तो एप्लिकेशन को फिर से शुरू करेगा और अपवाद पास करेगा या यह एप्लिकेशन को निलंबित कर देगा और डीबग मोड दर्ज करेगा। यदि एप्लिकेशन अपवाद को संभालता है, तो यह सामान्य रूप से चल रहा है।

पहला मौका अपवाद संदेश अक्सर इसका मतलब यह नहीं है कि कोड में कोई समस्या है। उन अनुप्रयोगों/घटकों के लिए जो अपवादों को गहन तरीके से संभालते हैं, पहले अवसर अपवाद संदेश डेवलपर को यह बताते हैं कि एक असाधारण स्थिति का सामना किया गया था और इसे संभाला गया था।

0

किसी डेवलपर के परिप्रेक्ष्य से, यह दूसरे मौके के अपवाद से संबंधित है, क्योंकि इसका मतलब होगा, यह कोड में संभाला नहीं गया था; इसलिए आवेदन बंद हो जाएगा।

पहला मौका उनमें से कई हो सकता है, लेकिन विकास परिप्रेक्ष्य से अधिक बार फिर से चिंता करने वाले लोगों को दूसरा मौका है, क्योंकि इससे एप्लिकेशन क्रैश हो जाएगा।

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