10.1.1 錯誤報告及設置級別
PHP程序的錯誤發生一般歸屬于下列三個領域:
語法錯誤:
語法錯誤最常見,并且也容易修復。如:代碼中遺漏一個分號。這類錯誤會阻止腳本的執行。
運行時錯誤:
這種錯誤一般不會阻止PHP腳本的執行,但會阻止當前要做的事情。輸出一條錯誤,但php腳本繼續執行
邏輯錯誤:
這種錯誤最麻煩,既不阻止腳本執行,也不輸出錯誤消息。
PHP的錯誤報錯級別
01.png
調整錯誤報告級別
display_errors: 是否開啟PHP輸出錯誤報告的功能
值為:On(默認輸出錯誤報告)、 Off(屏蔽所有錯誤信息)
在PHP腳本中可調用ini_set( )函數,動態設置php.ini配置文件.
如:ini_set("display_errors","On"); //顯示所有錯誤信息
error_reporting: 設置不同的錯誤報告級別。
error_reporting = E_ALL & ~E_NOTICE
-- 可以拋出任何非注意的錯誤,默認值
error_reporting = E_ERROR | E_PARSE | E_CORE_ERROR
-- 只考慮致命的運行時錯誤、新解析錯誤和核心錯誤。
error_reporting = E_ALL & ~(E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE)
-- 報告除用戶導致的錯誤之外的所有錯誤。
在PHP腳本可以通過error_reporting( )函數動態設置錯誤報告級別。如:error_reporting(E_ALL);
<html>
<head><title>測試錯誤報告</title></head>
<body>
<h2>測試錯誤報告</h2>
<?php
/*開啟php.ini中的display_errors指令,只有該指令開啟如果有錯誤報告才輸出*/
ini_set('display_errors', 1);
/*通過error_reporting()函數設置在本腳本中,輸出所有級別的錯誤報告*/
error_reporting( E_ALL );
/*“注意(notice)”的報告,不會阻止腳本的執行,并且可能不一定是一個問題 */
getType( $var ); //調用函數時提供的參數變量沒有在之前聲明
/*“警告(warning)”的報告,指示一個問題,但是不會阻止腳本的執行 */
getType(); //調用函數時沒有提供必要的參數
/*“錯誤(error)”的報告,它會終止程序,腳本不會再向下執行 */
get_Type(); //調用一個沒有被定義的函數
?>
</body>
</html>
test.php
<?php
error_reporting(E_ALL & ~E_NOTICE);
getType($a);
echo "1111111111111111<br>";
getType();
echo "222222222222222222222<br>";
getType3();
echo "333333333333333333333<br>";