2012-06-26 17 views
17

मैं यह पता लगाने की कोशिश कर रहा हूं कि PHP में throw new Exception के बाद स्थित कोड अभी भी निष्पादित है या नहीं - मैंने कोशिश की है और यह कुछ भी आउटपुट प्रतीत नहीं होता है लेकिन निश्चित रूप से जानना चाहता है।क्या 'नया अपवाद फेंक' को बाहर निकलने की आवश्यकता है()?

+0

मुझे आश्चर्य है कि अपवाद का बिंदु क्या है यदि यह एक स्टैक-अवांछित नहीं होता है (उचित परिस्थितियों, जैसे 'पकड़', इसे अवांछित स्टैक से रोकें) ... –

+8

_ जब कोई अपवाद होता है फेंक दिया गया, कथन के बाद कोड निष्पादित नहीं किया जाएगा, और PHP पहले मिलान करने वाले पकड़ ब्लॉक को खोजने का प्रयास करेगा। यदि कोई अपवाद नहीं पकड़ा जाता है, तो एक PHP घातक त्रुटि "अनकॉच अपवाद ..." संदेश के साथ जारी की जाएगी, जब तक कि एक हैंडलर set_exception_handler() ._ [दस्तावेज़ों से।] (Http: // php। शुद्ध/मैनुअल/en/language.exceptions.php) –

उत्तर

32

नहीं, अपवाद फेंकने के बाद कोड निष्पादित नहीं किया गया है।

try { 
    throw new Exception("caught for demonstration");     // 1 
    // code below inside the try{} block is never executed 
    echo "you won't read this." . PHP_EOL; 
} catch (Exception $e) { 
    // you may want to react on the Exception here 
    echo "exception caught!" . PHP_EOL;         // 2 
}  
// execution flow continues here, because Exception above has been caught 
echo "yay, lets continue!" . PHP_EOL;         // 3 
throw new Exception("uncaught for demonstration");      // 4, end 

// execution flow never reaches this point because of the Exception thrown above 
// results in "Fatal Error: uncaught Exception ..." 
echo "you won't see me, too" . PHP_EOL; 

PHP manual on exceptions देखें::

इस कोड उदाहरण में मैं संख्या के साथ लाइनों जो क्रियान्वित किया जा सकता है (कोड प्रवाह) चिह्नित

जब एक अपवाद फेंक दिया जाता है, बयान निम्नलिखित कोड होगा निष्पादित नहीं किया जाएगा, और PHP पहले मेल खाने वाले कैच ब्लॉक को खोजने का प्रयास करेगा। यदि कोई अपवाद नहीं पकड़ा जाता है, तो एक PHP घातक त्रुटि "अनकॉच अपवाद ..." संदेश के साथ जारी की जाएगी, जब तक कि एक हैंडलर को set_exception_handler() के साथ परिभाषित नहीं किया गया हो।

3

नहीं, throw कथन के बाद कोड निष्पादित नहीं किया गया है। return की तरह।

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