set_exception_handler

(PHP 5, PHP 7, PHP 8)

set_exception_handler 設置用戶自定義的異常處理函數(shù)

說明

set_exception_handler(callable $exception_handler): callable

設置默認的異常處理程序,用于沒有用 try/catch 塊來捕獲的異常。 在 exception_handler 調(diào)用后異常會中止。

參數(shù)

exception_handler

當一個未捕獲的異常發(fā)生時所調(diào)用函數(shù)的名稱。 該處理函數(shù)需要接受一個參數(shù),該參數(shù)是一個拋出的異常對象。 PHP 7 以前的異常處理程序簽名:

handler(Exception $ex): void

自 PHP 7 以來,大多數(shù)錯誤拋出 Error 異常,也能被捕獲。 ErrorException 都實現(xiàn)了 Throwable 接口。 PHP 7 起,處理程序的簽名:

handler(Throwable $ex): void

也可以傳遞 null 值用于重置異常處理函數(shù)為默認值。

警告

注意,如果在用戶回調(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";
?>

參見