0

次のコードがあるとします。

try {
    $i = 0;
    while ($i < 10) {
        if ($i == 7) {
            throw new Exception("Test exception");
        }
        $i++;
    }
} catch (Exception $e) {
}
print($i);

これは を返し7ます。try ブロックの最初の Exception がキャッチされると、プログラムは catch ブロックを実行してから、そのブロックの下で続行します (ではなく?)。

しかし、自動例外ハンドラを設定するとどうなりset_exception_handler()ますか ( を使用)。このコードを実行すると、戻り値が得られません。

function the_handler($e) {
}
set_exception_handler('the_handler');
$i = 0;
while ($i < 10) {
    if ($i == 7) {
        //throw new Exception("Test exception");
    }
    $i++;
}
print($i);

何故ですか?例外ハンドラを呼び出した後、正確には何が起こるでしょうか?

4

1 に答える 1

1

PHP のマニュアルには次のように書かれています。

exception_handler が呼び出された後、実行は停止します。

例外ハンドラーで例外をスローする場合など、多くの特殊なケースについては、マニュアル ページの説明を参照してください。

于 2013-05-31T19:52:48.173 に答える