09 錯(cuò)誤處理

錯(cuò)誤分類

  • 語(yǔ)法錯(cuò)誤
  • 運(yùn)行時(shí)錯(cuò)誤:提示性錯(cuò)誤,警告性錯(cuò)誤,致命性錯(cuò)誤
  • 邏輯錯(cuò)誤

錯(cuò)誤分級(jí)

php語(yǔ)言將各種錯(cuò)誤作了不同級(jí)別的分類,形成了大概有十幾個(gè)級(jí)別,這就是技術(shù)層面的錯(cuò)誤分級(jí)。
每一個(gè)級(jí)別的錯(cuò)誤,都有一個(gè)代號(hào),其實(shí)就是系統(tǒng)內(nèi)部的一個(gè)常量罷了。

  • 系統(tǒng)常見錯(cuò)誤
    E_ERROR,值為1,對(duì)應(yīng)二進(jìn)制0000 0000 0000 0001
    E_WARNING,值為2,對(duì)應(yīng)二進(jìn)制0000 0000 0000 0010
    E_NOTICE,值為4,對(duì)應(yīng)二進(jìn)制0000 0000 0000 0100
  • 用戶可自定義錯(cuò)誤
    E_USER_ERROR,
    E_USER_WARNING
    E_USER_NOTICE
  • 其他
    E_STRICT //嚴(yán)謹(jǐn)性語(yǔ)法檢查錯(cuò)誤
    E_ALL //代表所有錯(cuò)誤,對(duì)應(yīng)二進(jìn)制0111 0111 1111 1111

錯(cuò)誤觸發(fā)

有時(shí)候我們要求程序觸發(fā)錯(cuò)誤,以糾正某些東西。
trigger_error

$age = 800;
if($age > 127 || $age < 0){
    trigger_error("年齡不符合要求", E_USER_ERROR);    //三種用戶自定義錯(cuò)誤之一
}else{
    echo "輸入年齡正確";
}


錯(cuò)誤報(bào)告顯示

就是將錯(cuò)誤顯示在網(wǎng)頁(yè)上嘛

  • 是否顯示錯(cuò)誤報(bào)告
    1.在php.ini中,設(shè)定display_errors的值,為on或者off
    2.直接在php腳本文件中(在頂部?)使用函數(shù) ini_set() 進(jìn)行設(shè)置
    ini_set("display_errors", 0);    //不顯示錯(cuò)誤
    ini_set("display_errors", 1);    //顯示錯(cuò)誤
    
  • 顯示哪些級(jí)別的錯(cuò)誤
    1.在php.ini中,error_reporting中設(shè)置
    有3個(gè)值,默認(rèn)值,開發(fā)階段值,產(chǎn)品階段值
    根據(jù)不同階段,寫上不同的值就可以了。
    error_reporting.PNG

    2.在當(dāng)前php腳本文件中
    ini_set("error_reporting", E_NOTICE);    //顯示一個(gè)級(jí)別的錯(cuò)誤
    ini_set("error_reporting", E_NOTICE | E_WARNING);    //顯示兩個(gè)級(jí)別的錯(cuò)誤
    


錯(cuò)誤日志記錄問(wèn)題

  • 是否記錄
    1.在php.ini中設(shè)置,log_errors = on 或 off
    2.在腳本中設(shè)置ini_set("log_errors", 1),或者0
  • 記錄在哪里
    1.直接使用一個(gè)文件名,此時(shí)系統(tǒng)會(huì)自動(dòng)在每個(gè)文件夾下都建立該文件名,并用于記錄該文件夾下所有網(wǎng)頁(yè)文件的錯(cuò)誤
    ini_set("log_errors", "my_error.txt");
    
    2.使用一個(gè)特殊文件名字,syslog,此時(shí)站點(diǎn)的所有錯(cuò)誤都記錄到系統(tǒng)的日志文件中,非常少用??刂泼姘?>管理工具=>時(shí)間查看器
      ini_set("log_errors", "syslog");
    


自定義錯(cuò)誤處理器(函數(shù))

  • 設(shè)置處理函數(shù)的函數(shù)名
    set_error_handler("func1");
    
  • 定義該函數(shù)。不需要調(diào)用該函數(shù),發(fā)生錯(cuò)誤的話,會(huì)自動(dòng)調(diào)用。這個(gè)挺好用的
    function func1($errCode, $errMsg, $errFile, $errLine){
        //任意寫代碼
        echo "發(fā)生錯(cuò)誤";
        echo "<br/>錯(cuò)誤代號(hào)為:" . $errCode;
        echo "<br/>錯(cuò)誤內(nèi)容為:" . $errM's'g;
        echo "<br/>錯(cuò)誤文件為:" . $errFile;
        echo "<br/>錯(cuò)誤行號(hào)為:" . $errLine;
    }
    
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • php.ini設(shè)置,上傳大文件: post_max_size = 128Mupload_max_filesize ...
    bycall閱讀 7,034評(píng)論 3 64
  • 文件加載 語(yǔ)法形式:include、include_once、require、require_once4 種語(yǔ)法都...
    THEyAnJ閱讀 670評(píng)論 0 1
  • 個(gè)人學(xué)習(xí)批處理的初衷來(lái)源于實(shí)際工作;在某個(gè)迭代版本有個(gè)BS(安卓手游模擬器)大需求,從而在測(cè)試過(guò)程中就重復(fù)涉及到...
    Luckykailiu閱讀 5,001評(píng)論 0 11
  • 簡(jiǎn)介 PHP提供了錯(cuò)誤處理和日志記錄的功能. 這些函數(shù)允許你定義自己的錯(cuò)誤處理規(guī)則,以及修改錯(cuò)誤記錄的方式. 這樣...
    零一間閱讀 741評(píng)論 0 2
  • PHP錯(cuò)誤簡(jiǎn)介 PHP提供了錯(cuò)誤處理和日志記錄的功能. 這些函數(shù)允許你定義自己的錯(cuò)誤處理規(guī)則,以及修改錯(cuò)誤...
    四月不見閱讀 4,748評(píng)論 0 7

友情鏈接更多精彩內(nèi)容