假設一個具有下面的代碼:自動捕獲的異常會發生什麼?
try {
$i = 0;
while ($i < 10) {
if ($i == 7) {
throw new Exception("Test exception");
}
$i++;
}
} catch (Exception $e) {
}
print($i);
這將返回7
。當try塊中的第一個異常被捕獲時,程序將執行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);
這是爲什麼?調用異常處理程序後會發生什麼?
'set_exception_handler()'不會'捕捉'異常,它會在遇到* uncaught *異常之後定義PHP的行爲。通常這意味着優雅地失敗,並且不會向用戶顯示堆滿您可能不想公開的數據的堆棧跟蹤。 – Sammitch
@Sammitch是的,這是我的不好,英語不是我的母語。 – Keelan