自定義錯誤處理器
什麽叫錯誤處理器?
就是一旦發生錯誤,用來處理該錯誤的一種“機器” --其實就是一個函數。
自定義錯誤處理,就是指:
讓系統不要去處理錯誤,而完全由我們(開發者)來對錯誤處理:顯示和記錄。
做法,其實很簡單,就兩步:
第一步:
設定要用於處理錯誤的函數名!
set_error_handler("f1");
第二步:
去定義該函數
function f1()
{
//這裏可以任意寫代碼:自然正常是去顯示錯誤報告和記錄錯誤日誌。
}
代碼:
<?php //第一步:定義要作為錯誤處理的函數名 set_error_handler("my_error_handler");//第二步:定義該函數 //該函數需要定義4個形象,分別代表: //$errCode :代表錯誤代號(級別) //$errMsg: 代表錯誤信息內容 //$errFile: 代表發生錯誤的文件名 //$errLine: 代表發生錯誤的行號 //註意,該函數我們不要在程序中調用,而是,一發生錯誤就會被自動調用 //而且會傳入該4個實參數據 function my_error_handler($errCode,$errMsg,$errFile,$errLine) { $str = ""; $str .= "<p><font color=‘red‘>大事不好,發生錯誤:</font>";$str .= "<br />錯誤代號為:".$errCode; $str .= "<br />錯誤內容為:".$errMsg; $str .= "<br />錯誤文件為:".$errFile; $str .= "<br />錯誤行號為:".$errLine; $str .= "<br />發生時間為:".date("Y-d-m H:i:s"); $str .= "</p>"; echo $str;//輸出該“構建”的錯誤完整處理結果 //也可以將該內容“寫入”到某個文件中去,也就是所謂記錄錯誤日誌!}
案例一:
echo $v1; //使用不存在的變量
運行結果:
大事不好,發生錯誤:
錯誤代號為:8
錯誤內容為:Undefined variable: v1
錯誤文件為:F:\demo\wuxianji\index.php
錯誤行號為:28
發生時間為:2018-07-03 06:23:56
案例二:
echo C1; //使用不存在的常量
運行結果:
大事不好,發生錯誤:
錯誤代號為:8
錯誤內容為:Use of undefined constant C1 - assumed ‘C1‘
錯誤文件為:F:\demo\wuxianji\index.php
錯誤行號為:28
發生時間為:2018-07-03 06:28:27
C1
案例三:
include ‘./no_this_file.php‘; //加載沒有的文件
運行結果:
大事不好,發生錯誤:
錯誤代號為:2
錯誤內容為:include(./no_this_file.php): failed to open stream: No such file or directory
錯誤文件為:F:\demo\wuxianji\index.php
錯誤行號為:28
發生時間為:2018-07-03 06:30:05
大事不好,發生錯誤:
錯誤代號為:2
錯誤內容為:include(): Failed opening ‘./no_this_file.php‘ for inclusion (include_path=‘E:\xampp\php\PEAR‘)
錯誤文件為:F:\demo\wuxianji\index.php
錯誤行號為:28
發生時間為:2018-07-03 06:30:05
自定義錯誤處理器