set_error_handler() 函數設定使用者自訂的錯誤處理函數。
此函數用於建立運行期間的使用者自己的錯誤處理方法。
該函數傳回舊的錯誤處理程序,如果失敗則傳回NULL。
set_error_handler(error_function,error_types)
參數 | 描述 |
---|---|
error_function | 必需。規定發生錯誤時運行的函數。 |
error_types | 可選。規定在哪個錯誤報告等級會顯示使用者定義的錯誤。預設是"E_ALL"。可能的錯誤報告等級詳見下面的表格。 |
error_function(error_level,error_message,error_file,error_line,error_context)
參數 | 描述 |
---|---|
error_level | 必需的。規定使用者自訂的錯誤的錯誤報告等級。必須是值數字。可能的錯誤報告等級詳見下面的表格。 |
error_message | 必需的。規定用戶自訂的錯誤的錯誤訊息。 |
error_file | 可選。規定發生錯誤的檔案名稱。 |
error_line | 可選。規定發生錯誤的行號。 |
error_context | 可選。規定指向活躍符號表中發生錯誤的陣列。換句話說,error_context 將包含一個說明每個變數引發錯誤的存在範圍的陣列。 |
值 | 常量 | 描述 |
---|---|---|
2 | E_WARNING | 運行時非致命的錯誤。沒有停止執行腳本。 |
8 | E_NOTICE | 運行時的通知。腳本發現可能是一個錯誤,但也可能在正常運行腳本時發生。 |
256 | E_USER_ERROR | 使用者產生的致命錯誤。這就如同由程式設計師使用PHP 函數trigger_error() 產生的E_ERROR。 |
512 | E_USER_WARNING | 使用者產生的非致命錯誤。這就如同由程式設計師使用PHP 函數trigger_error() 產生的E_WARNING。 |
1024 | E_USER_NOTICE | 用戶產生的通知。這就如同由程式設計師使用PHP 函數trigger_error() 產生的E_NOTICE。 |
4096 | E_RECOVERABLE_ERROR | 可捕獲的致命錯誤。這就如同一個可以由使用者定義的句柄捕獲的E_ERROR(見set_error_handler())。 |
8191 | E_ALL | 所有的錯誤和警告的級別,除了E_STRICT(自PHP 6.0 起,E_STRICT 將作為E_ALL的一部分)。 |
提示:如果使用了函數,則會完全繞過標準的PHP 錯誤處理函數。如果必要,使用者自訂的錯誤處理程序必須終止腳本(die())。註:如果在腳本執行前發生錯誤,由於在那時自訂程式還沒有註冊,因此就不會用到這個自訂錯誤處理程序。
<?php//error handler functionfunction customError($errno, $errstr, $errfile, $errline) { echo "<b>Custom error:</b> [$errno] $errstr<br />"; echo " Error on line $errline in $errfile<br />"; echo "Ending Script"; die(); }//set error handlerset_error_handler("customError");$test=2;//trigger errorif ($test>1) { trigger_error("A custom error has been triggered"); }?>
上面程式碼的輸出如下所示:
Custom error: [1024] A custom error has been triggeredError on line 19 in C:webfoldertest.phpEnding Script