1 php的錯誤異常處理 (錯誤報告及級別的設定)

2021-08-28 22:06:22 字數 2081 閱讀 7813

1、語法錯誤

語法錯誤最常見,並且也容易修復,如:**中遺漏乙個分號,這類錯誤會阻止指令碼的執行。

2、執行時的錯誤:

這種錯誤一般不會阻止php指令碼的執行,但會阻止當前要做的事情,輸出一條錯誤,但php指令碼

會繼續執行。

3、邏輯錯誤:

這種錯誤最麻煩,既不阻止指令碼的執行,也不輸出錯誤訊息。

級別常量    錯誤值    錯誤報告描述

e_error 1 致命的執行時錯誤(阻止指令碼執行)

e_warning 2 執行時警告(非致命性錯誤)

e_parse 4 從語法中解析錯誤

e_notice 8 執行時注意訊息(可能是或可能不是乙個問題)

e_core_error 16 php啟動時初始化過程中的致命錯誤

e_core_warning 32 php啟動時初始化過程中的警告(非致命性錯)

e_compile_error 64 編譯時致命性錯

e_compile_warning 128 編譯時警告(非致命性錯)

e_user_error 256 使用者自定義的致命錯誤

e_user_warning 512 使用者自定義的警告(非致命性錯誤)

e_user_notice 1024 使用者自定義的提醒(經常是bug)

e_strict 2048 編碼標準化警告(建議如何修改以向前相容)

e_all 6143 所有的錯誤、警告和注意資訊

1、display_errors:是否開啟php輸出錯誤報告的級別。

值為:on (預設的輸出錯誤報告)、off (遮蔽所有的錯誤資訊)

-- 在php指令碼中可以呼叫ini_set( ) 函式,動態設定php.ini配置檔案。

-- 如:ini_set("display_errors", "on"); 顯示所有的錯誤資訊

2、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);

<?php

/*開啟php.ini中的display_errors指令,只有該指令開啟如果有錯誤報告才輸出*/

ini_set('display_errors', 1);

/*通過error_reporting()函式設定在本指令碼中,輸出所有級別的錯誤報告*/

error_reporting( e_all );

/*「注意(notice)」的報告,不會阻止指令碼的執行,並且可能不一定是乙個問題 */

gettype( $var ); //呼叫函式時提供的引數變數沒有在之前宣告

/*「警告(warning)」的報告,指示乙個問題,但是不會阻止指令碼的執行 */

gettype(); //呼叫函式時沒有提供必要的引數

/*「錯誤(error)」的報告,它會終止程式,指令碼不會再向下執行 */

get_type(); //呼叫乙個沒有被定義的函式

?>

PHP錯誤報告

級別常量 錯誤值錯誤報告描述 e error 致命的執行時錯誤 阻止指令碼執行 e warning 執行時警告 非致命性錯誤 e parse 從語法中解析錯誤 e notice 執行時注意訊息 可能是或可能不是乙個問題 e core error php啟動時初始化過程中的致命錯誤 e core wa...

PHP 設定錯誤報告

總結 php能夠在執行時動態設定是否顯示錯誤 顯示的錯誤級別。例子 不輸出錯誤報告 error reporting 0 輸出給定級別的錯誤 error reporting e error e warning e parse e notice 輸出除了e notice的他所有錯誤 error repo...

PHP錯誤報告級別

error reporting e all e notice 錯誤報告級別是位字段的疊加,推薦使用 e all e strict 1 e error 致命的執行時錯誤 2 e warning 執行時警告 非致命性錯誤 4 e parse 編譯時解析錯誤 8 e notice 執行時提醒 經常是 bu...