假设有以下代码:
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);
这是为什么?调用异常处理程序后究竟发生了什么?