php核心特性 - 錯誤處理
發布時間:2020/4/22 14:27:10 來源: 縱橫數據
錯誤與異常
錯誤,可以理解程序本身的錯誤,例如語法錯誤。而異常則更偏向于程序運行不符合預期或者不符合正常流程;對于 PHP 語言而言,處理錯誤和處理異常使用的機制完全不同,因此很容易讓人產生困惑。
例如,我們希望通過捕獲異常來處理除數為 0 的情況,但是在捕獲到異常之前,PHP 就觸發了錯誤。
try { $a = 5 / 0;
} catch (Exception $e) {
$e->getMessage();
$a = -1; // 通過異常來處理 $a 為 0 的情況,但是實際上,捕獲不到該異常}
echo $a;// PHP Warning: Division by zero
也就是說,PHP 將除數為 0 的情況當成了錯誤而觸發,而不會自動拋出異常,因此沒法捕獲。類似的,在很多情況下,PHP 都沒辦法自動拋出異常。只能通過 if - else 語句判斷再結合 throw 方法來并手動拋出異常。
上述情況的發生,主要還是因為異常機制是 PHP 向面向對象演進后得到的產物。而在此之前 PHP 的報錯主要還是通過錯誤機制,因此,在很多情況下,PHP 的錯誤要比異常更有價值。不過 PHP7 開始統一這兩者,使錯誤也可以像異常那樣拋出(這部分內容將放在異常部分講解)。
錯誤級別
PHP 中的錯誤可理解為 使腳本不運行不正常的情況,根據錯誤級別從高到低可劃分為五類
Parse error 或 Syntax Error - 語法解析錯誤,觸發該錯誤后,腳本完全無法運行;
Fatal Error - 致命錯誤,觸發該錯誤后,后面的腳本無法繼續執行;
Warning Error - 出現比較不恰當的地方,腳本可繼續執行;
Notice Error - 出現不恰當的地方,但是程度比 Warning Error 低,腳本可繼續執行;
Deprecated Error - 不推薦這么使用,未來可能會廢棄,腳本可繼續執行;
默認情況下,PHP 觸發錯誤,并顯示錯誤的級別及對應的提示。
錯誤,可以理解程序本身的錯誤,例如語法錯誤。而異常則更偏向于程序運行不符合預期或者不符合正常流程;對于 PHP 語言而言,處理錯誤和處理異常使用的機制完全不同,因此很容易讓人產生困惑。
例如,我們希望通過捕獲異常來處理除數為 0 的情況,但是在捕獲到異常之前,PHP 就觸發了錯誤。
try { $a = 5 / 0;
} catch (Exception $e) {
$e->getMessage();
$a = -1; // 通過異常來處理 $a 為 0 的情況,但是實際上,捕獲不到該異常}
echo $a;// PHP Warning: Division by zero
也就是說,PHP 將除數為 0 的情況當成了錯誤而觸發,而不會自動拋出異常,因此沒法捕獲。類似的,在很多情況下,PHP 都沒辦法自動拋出異常。只能通過 if - else 語句判斷再結合 throw 方法來并手動拋出異常。
上述情況的發生,主要還是因為異常機制是 PHP 向面向對象演進后得到的產物。而在此之前 PHP 的報錯主要還是通過錯誤機制,因此,在很多情況下,PHP 的錯誤要比異常更有價值。不過 PHP7 開始統一這兩者,使錯誤也可以像異常那樣拋出(這部分內容將放在異常部分講解)。
錯誤級別
PHP 中的錯誤可理解為 使腳本不運行不正常的情況,根據錯誤級別從高到低可劃分為五類
Parse error 或 Syntax Error - 語法解析錯誤,觸發該錯誤后,腳本完全無法運行;
Fatal Error - 致命錯誤,觸發該錯誤后,后面的腳本無法繼續執行;
Warning Error - 出現比較不恰當的地方,腳本可繼續執行;
Notice Error - 出現不恰當的地方,但是程度比 Warning Error 低,腳本可繼續執行;
Deprecated Error - 不推薦這么使用,未來可能會廢棄,腳本可繼續執行;
默認情況下,PHP 觸發錯誤,并顯示錯誤的級別及對應的提示。
本文來源:
//66moju.cn/article/2394.html
[復制鏈接]
鏈接已復制