錯(cuò)誤分類
- 語法錯(cuò)誤
- 運(yùn)行時(shí)錯(cuò)誤:提示性錯(cuò)誤朱浴,警告性錯(cuò)誤吊圾,致命性錯(cuò)誤
- 邏輯錯(cuò)誤
錯(cuò)誤分級
php語言將各種錯(cuò)誤作了不同級別的分類,形成了大概有十幾個(gè)級別翰蠢,這就是技術(shù)層面的錯(cuò)誤分級项乒。
每一個(gè)級別的錯(cuò)誤,都有一個(gè)代號(hào)梁沧,其實(shí)就是系統(tǒng)內(nèi)部的一個(gè)常量罷了檀何。
- 系統(tǒng)常見錯(cuò)誤
E_ERROR,值為1廷支,對應(yīng)二進(jìn)制0000 0000 0000 0001
E_WARNING频鉴,值為2,對應(yīng)二進(jìn)制0000 0000 0000 0010
E_NOTICE恋拍,值為4垛孔,對應(yīng)二進(jìn)制0000 0000 0000 0100 - 用戶可自定義錯(cuò)誤
E_USER_ERROR,
E_USER_WARNING施敢,
E_USER_NOTICE - 其他
E_STRICT //嚴(yán)謹(jǐn)性語法檢查錯(cuò)誤
E_ALL //代表所有錯(cuò)誤似炎,對應(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)頁上嘛
- 是否顯示錯(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ò)誤
- 顯示哪些級別的錯(cuò)誤
1.在php.ini中仆嗦,error_reporting中設(shè)置
有3個(gè)值辉阶,默認(rèn)值,開發(fā)階段值瘩扼,產(chǎn)品階段值谆甜。
根據(jù)不同階段,寫上不同的值就可以了集绰。
2.在當(dāng)前php腳本文件中ini_set("error_reporting", E_NOTICE); //顯示一個(gè)級別的錯(cuò)誤 ini_set("error_reporting", E_NOTICE | E_WARNING); //顯示兩個(gè)級別的錯(cuò)誤
錯(cuò)誤日志記錄問題
- 是否記錄
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)頁文件的錯(cuò)誤
2.使用一個(gè)特殊文件名字,syslog碍岔,此時(shí)站點(diǎn)的所有錯(cuò)誤都記錄到系統(tǒng)的日志文件中浴讯,非常少用“玻控制面板=>管理工具=>時(shí)間查看器ini_set("log_errors", "my_error.txt");
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; }