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 回答