錯(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ò)誤
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; }