09 錯誤處理

錯誤分類

  • 語法錯誤
  • 運行時錯誤:提示性錯誤,警告性錯誤,致命性錯誤
  • 邏輯錯誤

錯誤分級

php語言將各種錯誤作了不同級別的分類,形成了大概有十幾個級別,這就是技術層面的錯誤分級。
每一個級別的錯誤,都有一個代號,其實就是系統內部的一個常量罷了。

  • 系統常見錯誤
    E_ERROR,值為1,對應二進制0000 0000 0000 0001
    E_WARNING,值為2,對應二進制0000 0000 0000 0010
    E_NOTICE,值為4,對應二進制0000 0000 0000 0100
  • 用戶可自定義錯誤
    E_USER_ERROR
    E_USER_WARNING
    E_USER_NOTICE
  • 其他
    E_STRICT //嚴謹性語法檢查錯誤
    E_ALL //代表所有錯誤,對應二進制0111 0111 1111 1111

錯誤觸發

有時候我們要求程序觸發錯誤,以糾正某些東西。
trigger_error

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


錯誤報告顯示

就是將錯誤顯示在網頁上嘛

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

    2.在當前php腳本文件中
    ini_set("error_reporting", E_NOTICE);    //顯示一個級別的錯誤
    ini_set("error_reporting", E_NOTICE | E_WARNING);    //顯示兩個級別的錯誤
    


錯誤日志記錄問題

  • 是否記錄
    1.在php.ini中設置,log_errors = on 或 off
    2.在腳本中設置ini_set("log_errors", 1),或者0
  • 記錄在哪里
    1.直接使用一個文件名,此時系統會自動在每個文件夾下都建立該文件名,并用于記錄該文件夾下所有網頁文件的錯誤
    ini_set("log_errors", "my_error.txt");
    
    2.使用一個特殊文件名字,syslog,此時站點的所有錯誤都記錄到系統的日志文件中,非常少用。控制面板=>管理工具=>時間查看器
      ini_set("log_errors", "syslog");
    


自定義錯誤處理器(函數)

  • 設置處理函數的函數名
    set_error_handler("func1");
    
  • 定義該函數。不需要調用該函數,發生錯誤的話,會自動調用。這個挺好用的
    function func1($errCode, $errMsg, $errFile, $errLine){
        //任意寫代碼
        echo "發生錯誤";
        echo "<br/>錯誤代號為:" . $errCode;
        echo "<br/>錯誤內容為:" . $errM's'g;
        echo "<br/>錯誤文件為:" . $errFile;
        echo "<br/>錯誤行號為:" . $errLine;
    }
    
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,362評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,577評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,486評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,852評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,600評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,944評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,944評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,108評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,652評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,385評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,616評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,111評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,798評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,205評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,537評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,334評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,570評論 2 379

推薦閱讀更多精彩內容

  • php.ini設置,上傳大文件: post_max_size = 128Mupload_max_filesize ...
    bycall閱讀 6,819評論 3 64
  • 文件加載 語法形式:include、include_once、require、require_once4 種語法都...
    THEyAnJ閱讀 565評論 0 1
  • 個人學習批處理的初衷來源于實際工作;在某個迭代版本有個BS(安卓手游模擬器)大需求,從而在測試過程中就重復涉及到...
    Luckykailiu閱讀 4,759評論 0 11
  • 簡介 PHP提供了錯誤處理和日志記錄的功能. 這些函數允許你定義自己的錯誤處理規則,以及修改錯誤記錄的方式. 這樣...
    零一間閱讀 657評論 0 2
  • PHP錯誤簡介 PHP提供了錯誤處理和日志記錄的功能. 這些函數允許你定義自己的錯誤處理規則,以及修改錯誤...
    四月不見閱讀 2,774評論 0 7