假设有一个代码:
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);
为什么?调用异常处理程序后到底发生了什么?