次のコードがあるとします。
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);
何故ですか?例外ハンドラを呼び出した後、正確には何が起こるでしょうか?