php錯誤處理之錯誤報告級別
錯誤回報等級
錯誤類型
php大家最常見的錯誤顯示截圖,本書幫大家進(jìn)行了總結(jié):
【掌握等級的錯誤類型】?我們將最常用的錯誤分成了三種:
#錯誤類型 | |
---|---|
#E_ERROR | 錯誤,檔案直接中斷 |
#E_WARNING | 警告,問題比較嚴(yán)重。但也會繼續(xù)向下執(zhí)行 |
E_NOTICE | 提示,有些小問題不會影響程式。常發(fā)生在專案未定義 |
E_PARSE | 編譯時語法解析錯誤。解析錯誤僅由分析器產(chǎn)生。 |
E_ALL | 所有的錯誤 |
#E_STRICT | 啟用PHP對程式碼的修改建議,以確保程式碼具有最佳的互通性和向前相容性。 |
E_DEPRECATED | 啟用後將對未來版本可能無法正常運(yùn)作的程式碼給予警告。 |
在上面的幾種型別中:
error最嚴(yán)重,必須要解決。不然程式無法繼續(xù)向下執(zhí)行
warning也很重要。通也必須解決。如果明確的,故意的可以不用處理。
notice 你可以不用管。但是在有些公司,專案標(biāo)準(zhǔn)特別高。在高標(biāo)準(zhǔn)要求的項(xiàng)目中也必須解決。因?yàn)椋琻otice會影響PHP的執(zhí)行效率。通常發(fā)生在函數(shù)未定義等。
parse錯誤,是指語法錯誤寫錯了,必須解決
代表全部類型的所有錯誤
【了解等級的錯誤類型】?再從這三種擴(kuò)展出來了另外一些需要了解的錯誤項(xiàng):
#錯誤類型 | |
---|---|
E_CORE_ERROR | |
E_CORE_WARNING | |
E_COMPILE_ERROR | |
E_COMPILE_WARNING | |
E_USER_ERROR | |
E_USER_WARNING | |
E_USER_NOTICE | |
##E_USER_DEPRECATED |
在學(xué)習(xí)過程中,上面的類型了解即可。因?yàn)榛旧喜粫龅?,遇到了大家去查一下或查一下手冊就清楚了?
error_reporting 報告錯誤類型
error_reporting 是指錯誤報告。在php.ini中也有這樣一個參數(shù)。這個參數(shù)。決定了PHP引擎記錄、報告、顯示哪些錯誤類型。
一、 在php.ini中error_reporting參數(shù)。如若error_reporting參數(shù)設(shè)定為0。整個PHP引擎發(fā)出錯誤均不會顯示、輸出、記錄。在下一章將要講到的日誌記錄中,也不會記錄。
如果我們想顯示所有錯誤可以寫上:
error_reporting = E_ALL
想要顯示所有錯誤但排除提示,可以將這個參數(shù)寫成:
error_reporting = E_ALL & ~ E_NOTICE
顯示所有錯誤,但排除提示、相容性和未來相容性。可寫為:
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
二、在某些情況下我們無權(quán)限操作php.ini文件,又想要控制error_reporting怎麼辦呢?
在運(yùn)行的xxxx.php檔案中開始處,我們可以使用error_reporting()函數(shù)灰達(dá)到目標(biāo)。
示範(fàn)程式碼如下:
<?php //關(guān)閉了所有的錯誤顯示 error_reporting(0); //顯示所有錯誤 //error_reporting(E_ALL); //顯示所有錯誤,但不顯示提示 //error_reporting(E_ALL & ~ E_NOTICE); ?>
上面的程式碼你可以試試,故意寫錯程式碼看看。在目前文件中也會不會顯示指定的錯誤。
[擴(kuò)充、了解知識點(diǎn)]:?@ 符是我們之前學(xué)過的單行不顯示錯誤,請不用或少用@符。
我們拿讀取一個不存在的文件,這樣的php程式碼來示範(fàn)實(shí)作過程:
<?php //讀取一個不存在的adsaf.txt文件,用@符抑制錯誤 @$fp = fopen('adsaf.txt','r'); ?>
@符效率較低,它在php核心中的實(shí)作過程是:
<?php //關(guān)閉錯誤 error_reporting(0); //讀取一個不存在的文件,顯示錯誤 //顯示錯誤 error_reporting(E_ALL & ~ E_NOTICE); ?>