(PHP 5, PHP 7, PHP 8)
set_exception_handler — 設置用戶(hù)自定義的異常處理函數
設置默認的異常處理程序,用于沒(méi)有用 try/catch 塊來(lái)捕獲的異常。
在 exception_handler
調用后異常會(huì )中止。
exception_handler
當一個(gè)未捕獲的異常發(fā)生時(shí)所調用函數的名稱(chēng)。 該處理函數需要接受一個(gè)參數,該參數是一個(gè)拋出的異常對象。 PHP 7 以前的異常處理程序簽名:
自 PHP 7 以來(lái),大多數錯誤拋出 Error 異常,也能被捕獲。 Error 和 Exception 都實(shí)現了 Throwable 接口。 PHP 7 起,處理程序的簽名:
也可以傳遞 null
值用于重置異常處理函數為默認值。
注意,如果在用戶(hù)回調里將 ex
參數的類(lèi)型明確約束為Exception, PHP 7 中由于異常類(lèi)型的變化,將會(huì )產(chǎn)生問(wèn)題。
返回之前定義的異常處理程序的名稱(chēng),或者在錯誤時(shí)返回 null
。
如果之前沒(méi)有定義錯誤處理程序,也會(huì )返回 null
。
版本 | 說(shuō)明 |
---|---|
7.0.0 |
傳入 exception_handler 的參數從 Exception 改為 Throwable
|
5.5.0 |
之前版本里,如果傳入 null ,函數會(huì )返回 true 。
自 PHP 5.5.0 后,會(huì )返回上一次的異常處理器。
|
示例 #1 set_exception_handler() 范例
<?php
function exception_handler($exception) {
echo "Uncaught exception: " , $exception->getMessage(), "\n";
}
set_exception_handler('exception_handler');
throw new Exception('Uncaught Exception');
echo "Not Executed\n";
?>