1. 程式人生 > >2、php的錯誤異常處理(自定義php的錯誤處理方式)

2、php的錯誤異常處理(自定義php的錯誤處理方式)

 一、概述

  自定義錯誤報告的處理方式,可以完全繞過標準的php錯誤處理函式,這樣就可以按照自己定義的
  格式列印錯誤報告,或改變錯誤報告列印的位置,以下幾種情況可以考慮自定義錯誤處理。
   1、可以記下錯誤的資訊,及時發現一些生產環境出現的問題。
   2、可以遮蔽錯誤。
   3、可以控制錯誤的輸出。
   4、可以作為除錯工具。
二、使用set_error_handler() 函式來設定使用者自定義的錯誤異常。

  三、程式碼段

 // 在php中註冊一個函式,來處理錯誤報告,而不是原來的方式處理了。
    set_error_handler('myerrorfn');

    $mess = '';

    // 自己的錯誤報告處理函式
    /**
    * @param $error_type 錯誤型別
    * @param $errpr_message 錯誤資訊
    * @param $error_file 錯誤檔案
    * @param $error_line 錯誤的行數
    */
    function myerrorfn($error_type, $error_message, $error_file, $error_line)
    {
        global $mess;
        $mess.= "發生的錯誤級別為{$error_type}, 錯誤的資訊為{$error_message}, 發生錯誤的檔案是{$error_file}, 發生錯誤的行數為{$error_line}";
    }

    echo $mess;

通過上面測試程式碼可以很好解決安全和除錯方面的矛盾,但注意 E_ERROR、E_PARSE、E_CORE_ERROR、E_CORE_WARNING、E_COMPILE_ERROR、E_COMPILE_WARNING是不會被這個控制代碼處理的,也就是會用原始的方式顯示,不過通常情況下不會發生。 使用set_error_handler()後,error_reporting()將會失效。也就是所有錯誤都是由自定義的函式處理。