18

PHPの後throw new Exceptionにあるコードがまだ実行されているかどうかを調べようとしています-試してみましたが、何も出力されていないようでしたが、確かに知りたいです.

4

2 に答える 2

39

いいえ、例外をスローした後のコードは実行されません。

このコード例では、実行される行(コードフロー)に番号を付けました。

try {
    throw new Exception("caught for demonstration");                    // 1
    // code below an exception inside a 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: " . $e->getMessage() . 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のマニュアルを参照してください。

例外がスローされると、ステートメントに続くコードは実行されず、PHPは最初に一致するcatchブロックを見つけようとします。例外がキャッチされない場合、ハンドラーがで定義されていない限り、PHPFatalErrorは「UncaughtException...」メッセージとともに発行されset_exception_handler()ます。

于 2012-06-26T19:51:50.313 に答える
5

いいえ、throwステートメントの後のコードは実行されません。のようにreturn

于 2012-06-26T19:51:37.520 に答える