"पहला मौका अपवाद" क्या है?


103

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

जवाबों:


78

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


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

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

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

@ सुपरकैट: ऊपर बताए गए विवरणों के बारे में मुझे कैसे पता चलेगा? क्या यह आत्म-प्रयोग का परिणाम है? किताबें पढ़ना (कौन सी)? यह एक बहुत प्रभावशाली अंतर्दृष्टि है! मुझे खुशी होगी अगर आप इस जवाब देने के लिए एक क्षण ले सकते हैं ...
अनीश

2
@NoSaidTheCompiler: मैंने विभिन्न ब्लॉगों में अपवाद हैंडलिंग के बारे में पढ़ा है; मुझे उम्मीद है कि "अपवाद फ़िल्टर .net" के लिए एक खोज विषय पर कुछ ब्लॉगों को चालू करना चाहिए।
सुपरकैट

17

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

पहला और दूसरा मौका अपवाद हैंडलिंग


लिंक टूटी एक और लिंक: blogs.msdn.microsoft.com/davidklinems/2005/07/12/…
amit jha

4

मैंने बस डिबगर का उपयोग करना शुरू कर दिया और इसमें भाग गया। अपने शोध में, मैंने MSDN ब्लॉग पोस्ट पाया कि पहला मौका अपवाद क्या है?यह मेरे लिए मंजूरी दे दी।

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


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

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

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

0

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

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

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


0

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

पहला मौका उनमें से कई हो सकता है, लेकिन एक विकास के दृष्टिकोण से, फिर से अधिक चिंता करने के लिए, दूसरा मौका है, क्योंकि यह एक आवेदन दुर्घटना का कारण होगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.