異常與錯誤的概述
什麼叫作異常?
異常是指程序運行中不符合預期狀況以及與正常流程不一樣的情況。php
好比你連接數據庫,在參數都寫上去的條件下,發現連接不上去,這就屬於不符合預期 html
能夠被 try-catch 捕捉獲得thinkphp
什麼叫作錯誤?
是屬於php程序自身的問題,通常是由非法的語法,環境問題致使的,使得編譯器沒法經過檢查,甚至沒法運行的狀況。
平時遇到的 warming、notice都是錯誤,只是級別不一樣而已。 數據庫
例如:segmentfault
- TypeError(類型錯誤) 我規定的函數參數類型和傳入的參數不一致
- ArithmeticError (算數錯誤)
- ParseError (解析錯誤)在調入的文件中,include "demo.php",或者 eval();中有語法錯誤形成解析失敗
- AssertionError(斷言錯誤)當assert生效時產生該錯誤
- DivisionByZeroError (分母爲零) 運算過程當中例如除法,分母爲0
錯誤的級別
在 php 中的錯誤也是有級別的框架
Parse error
>Fatal Error
> Waning
> Notice
> Deprecated
函數
Deprecated 最低級別的錯誤(不推薦,不建議)
使用一些過時函數的時候會出現,程序繼續執行
Notice 通知級別的錯誤
使用一些未定義變量、常量或者數組key沒有加引號的時候會出現,程序繼續執行
E_NOTICE // 運行時通知。表示腳本遇到可能會表現爲錯誤的狀況.
E_USER_NOTICE // 用戶產生的通知信息。
Waning 警告級別的錯誤
程序出問題了,須要修改代碼!!!程序繼續執行
E_WARNING // 運行時警告 (非致命錯誤)。
E_CORE_WARNING // PHP初始化啓動過程當中發生的警告 (非致命錯誤) 。
E_COMPILE_WARNING // 編譯警告
E_USER_WARNING // 用戶產生的警告信息
Fatal Error 錯誤級別的錯誤
程序直接報錯,須要修改代碼!!!中斷程序執行,可以使用register_shutdown_function()函數在程序終止前觸發一個函數
E_ERROR // 致命的運行錯誤,錯誤沒法恢復,暫停執行腳本
E_CORE_ERROR // PHP啓動時初始化過程當中的致命錯誤
E_COMPILE_ERROR // 編譯時致命性錯,就像由Zend腳本引擎生成了一個E_ERROR
E_USER_ERROR // 自定義錯誤消息。像用PHP函數trigger_error(錯誤類型設置爲:E_USER_ERROR)
Parse error 語法解析錯誤
語法檢查階段報錯,須要修改代碼!!!中斷程序執行,除了修改ini文件,將錯誤信息寫到日誌中,什麼也作不了
E_PARSE //編譯時的語法解析錯誤