1. 程式人生 > >自定義錯誤處理器

自定義錯誤處理器

pre 沒有 dex sta pear err AI fun 日誌

什麽叫錯誤處理器?

  就是一旦發生錯誤,用來處理該錯誤的一種“機器” --其實就是一個函數。

自定義錯誤處理,就是指:

  讓系統不要去處理錯誤,而完全由我們(開發者)來對錯誤處理:顯示和記錄。

做法,其實很簡單,就兩步:

第一步:

  設定要用於處理錯誤的函數名!

  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

自定義錯誤處理器