2011-03-02 10 views

उत्तर

13

हां, किसी भी finally ब्लॉक के अपवाद के साथ, या यदि फ़ंक्शन के भीतर कोई अपवाद हैंडलर है जो आप जिस प्रकार के अपवाद को फेंक रहे हैं उसे पकड़ सकते हैं।

0

यह करता है, हाँ। यह एक अपवाद उत्पन्न करता है जो कॉलिंग स्टैक को चलाता है।

+0

जावा के आखिरकार ब्लॉक के बराबर है जो इस उत्तर को संशोधित कर सकता है? – PypeBros

+0

वहाँ है, हाँ। आपको सामान्य कोशिश, पकड़, आखिरकार अपवाद को ढेर से ऊपर उठाना मिलता है। – FarligOpptreden

0

हां। यह निकटतम catch ब्लॉक पर जाएगा।

1

क्या आपने इसे आजमाया? :)

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

1

हाँ, जब तक आप इसे पकड़ने के लिए या एक अंत में ब्लॉक:

try { 
    var foo = 42 /0; 
} 
finally 
{ 
    // This will execute after the exception has been thrown 
} 
+0

... और अंत में, वर्तमान विधि किसी भी तरह से बाहर हो जाएगी, यानी, निष्पादित करने के बाद कोड निष्पादित नहीं होगा। –

5

नियंत्रण कॉल स्टैक में अगले अपवाद संचालक (catch ब्लॉक) के पास रहता है, चाहे वह से एक वर्तमान पद्धति में हो या उसके माता-पिता। यदि throw किसी प्रयास/पकड़ ब्लॉक में encapsulated नहीं है, तो किसी भी finally ब्लॉक को पैरेंट कैच ब्लॉक की मांग करने से पहले निष्पादित किया जाता है।

0

एक अपवाद एक ऐसी घटना है जो तब हुआ जब ऐसा नहीं किया गया था और इसलिए एप्लिकेशन को इस घटना के साथ क्या करना है, यह नहीं पता था। सभी ओओपी भाषाओं में (जो मुझे पता है) रनटाइम क्या होता है जो ईवेंट को बुलाए जाने वाले फ़ंक्शन को रोकना होता है और फिर अपवाद को स्टैक तक फेंक देता है जब तक कोई जानता है कि इसके साथ क्या करना है। यही वह जगह है जहां कोशिश/पकड़ने वाले ब्लॉक आते हैं।

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