錯誤與異常是兩個完全不同的概念
錯誤
錯誤類型
共16個
值。 | 1 | E_ERROR (integer) | 致命的運行時錯誤。這類錯誤一般是不可恢復的情況,例如記憶體分配所導致的問題。後果是導致腳本終止不再繼續運作。 |
---|---|---|---|
2 | E_WARNING (integer) | 運行時警告 (非致命錯誤)。僅給出提示訊息,但是腳本不會終止運行。 | |
4 | E_PARSE (integer) | 編譯時語法解析錯誤。解析錯誤僅由分析器產生。 | |
8 | E_NOTICE (integer) | 運行時通知。表示腳本遇到可能會表現為錯誤的情況,但是在可以正常運作的腳本裡面也可能會有類似的通知。 | |
16 | E_CORE_ERROR (integer) | 在PHP初始化啟動過程中發生的致命錯誤。這個錯誤類似 E_ERROR,但是是由PHP引擎核心產生的。 | since PHP 4 |
32 | E_CORE_WARNING (integer) | PHP初始化啟動過程中發生的警告 (非致命錯誤) 。類似 E_WARNING,但是是PHP引擎核心產生的。 | since PHP 4 |
64 | E_COMPILE_ERROR (integer) | 致命編譯時錯誤。類似E_ERROR, 但是是由Zend腳本引擎產生的。 | since PHP 4 |
128 | E_COMPILE_WARNING (integer) | 編譯時警告 (非致命錯誤)。類似 E_WARNING,但是是由Zend腳本引擎產生的。 | since PHP 4 |
256 | E_USER_ERROR (integer) | 用戶產生的錯誤訊息。類似 E_ERROR, 但是是由使用者自己在程式碼中使用PHP函數 trigger_error()來產生的。 | since PHP 4 |
512 | E_USER_WARNING (integer) | 用戶產生的警告訊息。類似 E_WARNING, 但是是由使用者自己在程式碼中使用PHP函數 trigger_error()來產生的。 | since PHP 4 |
1024 | E_USER_NOTICE (integer) | 用戶產生的通知資訊。類似 E_NOTICE, 但是是由使用者自己在程式碼中使用PHP函數 trigger_error()來產生的。 | since PHP 4 |
2048 | E_STRICT (integer) | 啟用 PHP 對程式碼的修改建議,以確保程式碼具有最佳的互通性和向前相容性。 | since PHP 5 |
4096 | E_RECOVERABLE_ERROR (integer) | 可被捕捉的致命錯誤。 它表示發生了一個可能非常危險的錯誤,但還沒有導致PHP引擎處於不穩定的狀態。 如果該錯誤沒有被使用者自訂句柄捕獲 (參見 set_error_handler()),將成為一個 E_ERROR 從而腳本會終止運行。 | since PHP 5.2.0 |
8192 | E_DEPRECATED (integer) | 運行時通知。啟用後將會對在未來版本中可能無法正常運作的程式碼給予警告。 | since PHP 5.3.0 |
16384 | E_USER_DEPRECATED (integer) | 用戶產少的警告訊息。 類似 E_DEPRECATED, 但是是由使用者自己在程式碼中使用PHP函數 trigger_error()來產生的。 | since PHP 5.3.0 |
30719 | E_ALL (integer) | E_STRICT出外的所有錯誤和警告訊息。 | 30719 in PHP 5.3.x, 6143 in PHP 5.2.x, 2047 previously |
錯誤等級 | reee輸出 | (3) Warning 警告等級 |
<code>Notice: Use of undefined constant a - assumed 'a' in /Users/weiheli/www/php/003.php on line 4 aaa </code>
<code>settype($var, 'abc'); echo $var; </code>
<code>Warning: settype(): Invalid type in /Users/weiheli/www/php/003.php on line 3 </code>
<code>// 调用未定义的函数 fn(12); </code>
ini_set
函數設定記錄日誌函數<code>Fatal error: Call to undefined function fn() in /Users/weiheli/www/php/003.php on line 3 </code>
<code>echo 'hello world' </code>
異常
<code>Parse error: parse error, expecting `','' or `';'' in /Users/weiheli/www/php/003.php on line 3 </code>
從上面的程式碼可以看出,PHP中不會自動拋出異常,一定要使用
throw,這一點與Java不同
re內建異常類別如PDO不用throw
throw之後的語句不會被執行
<code>; 是否显示错误。解析错误始终都会显示 display_errors = On ; 显示哪些错误 ;error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT error_reporting = E_ALL </code>
<code>error_reporting() </code>
以上就介紹了PHP的錯誤與異常,包含了面向的內容,希望對PHP教學有興趣的朋友有幫助。