PHP入門10 - PHP的錯誤與異常處理

1、PHP錯誤的等級php

 2、調整錯誤報告的級別函數

  一、經過腳本文件,查找 display_errors:是否開啓,默認值爲:ON(默認輸出錯誤報告),調整則改爲:E_ALL 或 E_ALL & ~E_NOTICE;工具

  二、能夠在PHP腳本中修改 error_reporting(E_ALL)或 error_reporting(E_ALL & E_NOTICE);spa

3、自定錯誤報告方式調試

  一、自定義錯誤報告的處理方式,能夠徹底繞過標準的PHP錯誤處理函數,這樣就能夠按本身定義的格式打印錯誤報告,或改變錯誤報告打印的位置,如下幾種狀況能夠考慮自定義錯誤處理。日誌

  二、能夠記下錯誤的信息,及時發現一些生產環境出現的問題;code

  三、能夠屏蔽錯誤。 能夠控制錯誤的輸出。 能夠做爲調試工具。對象

  四、使用set_error_handler()函數來設置用戶自定義錯誤處理。blog

<?php
/**
 * @Author: Marte
 * @Date:   2018-04-30 15:38:08
 * @Last Modified by:   Marte
 * @Last Modified time: 2018-04-30 16:02:31
 */
    
    error_reporting(E_ALL & ~E_NOTICE);
    //在PHP中註冊一個函數,來處理錯誤報告,而不按原來的方式處理了
    set_error_handler("errorfun");
    $mess = "";
    //自定義錯誤報告處理函數
    function errorfun($error_type, $error_message, $error_file, $error_line){
        global $mess;

        $mess .= "錯誤級別:{$error_type} <br>錯誤信息:{$error_message} <br>錯誤文件:{$error_file} <br>錯誤在第幾行:{$error_line}";
    }

    gettype($a);
    echo "1111111111111111 <br>";
    echo "2222222222222222 <br>";
    echo $mess;
    /*
    輸出信息:
        1111111111111111 
        2222222222222222 
        錯誤級別:8 
        錯誤信息:Undefined variable: a 
        錯誤文件:D:\WampServer\wamp64\www\php10.1.2_error_message.calss.php 
        錯誤在第幾行:18
     */

4、記錄錯誤日誌get

  一、先配置php.ini 文件

    error_reporting = E_ALL // 將向PHP發送每一個錯誤

    display_errors = OFF //不顯示錯誤報告

      設置:ini_set("display_errors", OFF);

      獲取:ini_get();

    log_errors = On // 決定日誌語句記錄的位置

    log_errors_max_log = 1024 //每一個日誌項的最大長度

    error_log = //制定錯誤寫入的文件

    error_log = syslog  //系統日誌

5、PHP異常處理:利用 try {}catch{},

  異常(Exception)處理用於在指定的錯誤發生時改變腳本的正常流程。是PHP5中的一個新的重要特性。異常處理是一種可擴展、易維護的錯誤處理統一機制,並提供了一種新的面向對象的錯誤處理方式。

  異常處理格式:

      try{  
             使用try去包含可能會發生異常的代碼.
             一旦出現異常try進行捕獲異常,交給catch處理。
             拋出異常語句:throw 異常對象。
          }catch(異常對象參數){
             在這裏作異常處理。
          }[catch(。,,){
             .. .. ..
          }]

  一、try catch是一體的;

  二、try catch之間不能有任何代碼

  三、工做原理:   

    1. 試着執行try中的代碼, 若是沒有問題, 繼續執行catch以後的代碼
    2. Exception 是系統的類
    3. 若是有異常對象拋出, 就將異常對象給 catch()中的類
    4. try中發生異常位置後的代碼再也不執行, 而是直接到catch中, catch中執行完成之後, 再繼續執行catch以後的代碼

<?php
/*
 *  try {
 *
 *  }
 *    
 *
 *  catch(Exception $e) {
 *
 *  }
 *
 *  1. try catch是一體
 *  2. try catch之間不能有任何代碼
 *
 *  工做原理
 *
 *      1. 試着執行try中的代碼, 若是沒有問題, 繼續執行catch以後的代碼
 *
 *      2. Exception 是系統的類 
 *
 *      3. 若是有異常對象拋出, 就將異常對象給 catch()中的類
 *
 *      4. try中發生異常位置後的代碼再也不執行, 而是直接到catch中, catch中執行完成之後, 再繼續執行catch以後的代碼
 */
    echo "早上起牀<br>";

try{
    echo "開車上班<br>";

    //拋出異常
    throw  new Exception("車子爆胎了");
    echo "路況很好<br>";

} catch(Exception $e) {    //  Exception $e = new Exception('');
    echo $e->getMessage()."<br>";//getMessage() 獲取異常信息
echo "換上備胎,繼續開車上班<br>"; } echo "到公司開始工做<br>";
相關文章
相關標籤/搜索