(PHP 5, PHP 7, PHP 8)
set_exception_handler — 設(shè)置用戶自定義的異常處理函數(shù)
設(shè)置默認(rèn)的異常處理程序,用于沒有用 try/catch 塊來捕獲的異常。
在 exception_handler
調(diào)用后異常會中止。
exception_handler
當(dāng)一個未捕獲的異常發(fā)生時所調(diào)用函數(shù)的名稱。 該處理函數(shù)需要接受一個參數(shù),該參數(shù)是一個拋出的異常對象。 PHP 7 以前的異常處理程序簽名:
自 PHP 7 以來,大多數(shù)錯誤拋出 Error 異常,也能被捕獲。 Error 和 Exception 都實現(xiàn)了 Throwable 接口。 PHP 7 起,處理程序的簽名:
也可以傳遞 null
值用于重置異常處理函數(shù)為默認(rèn)值。
注意,如果在用戶回調(diào)里將 ex
參數(shù)的類型明確約束為Exception, PHP 7 中由于異常類型的變化,將會產(chǎn)生問題。
返回之前定義的異常處理程序的名稱,或者在錯誤時返回 null
。
如果之前沒有定義錯誤處理程序,也會返回 null
。
版本 | 說明 |
---|---|
7.0.0 |
傳入 exception_handler 的參數(shù)從 Exception 改為 Throwable
|
5.5.0 |
之前版本里,如果傳入 null ,函數(shù)會返回 true 。
自 PHP 5.5.0 后,會返回上一次的異常處理器。
|
示例 #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";
?>