laravel中的異常有:1、“E_ERROR”致命運(yùn)行時(shí)錯(cuò)誤,不可恢復(fù),會導(dǎo)致腳本終止不再繼續(xù)運(yùn)行;2、“E_WARNING”運(yùn)行時(shí)警告“非致命錯(cuò)誤”;3、“E_PARSE”編譯時(shí)語法解析錯(cuò)誤;4、“E_CORE_ERROR”初始化啟動過程中發(fā)生的致命錯(cuò)誤;5、“E_COMPILE_ERROR”致命編譯時(shí)錯(cuò)誤;6、“E_RECOVERABLE_ERROR”可被捕捉的致命錯(cuò)誤。
本教程操作環(huán)境:windows7系統(tǒng)、Laravel9版,DELL G3電腦。
laravel中的異常級別
常量 | 說明 |
---|---|
E_ERROR | 致命的運(yùn)行時(shí)錯(cuò)誤。這類錯(cuò)誤一般是不可恢復(fù)的情況,例如內(nèi)存分配導(dǎo)致的問題。后果是導(dǎo)致腳本終止不再繼續(xù)運(yùn)行。 |
E_WARNING | 運(yùn)行時(shí)警告 (非致命錯(cuò)誤)。僅給出提示信息,但是腳本不會終止運(yùn)行。 |
E_PARSE | 編譯時(shí)語法解析錯(cuò)誤。解析錯(cuò)誤僅僅由分析器產(chǎn)生。 |
E_NOTICE | 運(yùn)行時(shí)通知。表示腳本遇到可能會表現(xiàn)為錯(cuò)誤的情況,但是在可以正常運(yùn)行的腳本里面也可能會有類似的通知。 |
E_CORE_ERROR | 在 PHP 初始化啟動過程中發(fā)生的致命錯(cuò)誤。該錯(cuò)誤類似 E_ERROR,但是是由 PHP 引擎核心產(chǎn)生的。 |
E_CORE_WARNING | PHP 初始化啟動過程中發(fā)生的警告 (非致命錯(cuò)誤) 。類似 E_WARNING,但是是由 PHP 引擎核心產(chǎn)生的。 |
E_COMPILE_ERROR | 致命編譯時(shí)錯(cuò)誤。類似 E_ERROR, 但是是由 Zend 腳本引擎產(chǎn)生的。 |
E_COMPILE_WARNING | 編譯時(shí)警告 (非致命錯(cuò)誤)。類似 E_WARNING,但是是由 Zend 腳本引擎產(chǎn)生的。 |
E_USER_ERROR | 用戶產(chǎn)生的錯(cuò)誤信息。類似 E_ERROR, 但是是由用戶自己在代碼中使用 PHP 函數(shù) trigger_error () 來產(chǎn)生的。 |
E_USER_WARNING | 用戶產(chǎn)生的警告信息。類似 E_WARNING, 但是是由用戶自己在代碼中使用 PHP 函數(shù) trigger_error () 來產(chǎn)生的。 |
E_USER_NOTICE | 用戶產(chǎn)生的通知信息。類似 E_NOTICE, 但是是由用戶自己在代碼中使用 PHP 函數(shù) trigger_error () 來產(chǎn)生的。 |
E_STRICT | 啟用 PHP 對代碼的修改建議,以確保代碼具有最佳的互操作性和向前兼容性。 |
E_RECOVERABLE_ERROR | 可被捕捉的致命錯(cuò)誤。 它表示發(fā)生了一個(gè)可能非常危險(xiǎn)的錯(cuò)誤,但是還沒有導(dǎo)致 PHP 引擎處于不穩(wěn)定的狀態(tài)。 如果該錯(cuò)誤沒有被用戶自定義句柄捕獲 (參見 set_error_handler ()),將成為一個(gè) E_ERROR 從而腳本會終止運(yùn)行。 |
E_DEPRECATED | 運(yùn)行時(shí)通知。啟用后將會對在未來版本中可能無法正常工作的代碼給出警告。 |
E_USER_DEPRECATED | 用戶產(chǎn)少的警告信息。 類似 E_DEPRECATED, 但是是由用戶自己在代碼中使用 PHP 函數(shù) trigger_error () 來產(chǎn)生的。 |
E_ALL | 用戶產(chǎn)少的警告信息。 類似 E_DEPRECATED, 但是是由用戶自己在代碼中使用 PHP 函數(shù) trigger_error () 來產(chǎn)生的。 |
Laravel 異常處理
laravel 的異常處理由類 IlluminateFoundationBootstrapHandleExceptions::class 完成:
class HandleExceptions { public function bootstrap(Application $app) { $this->app = $app; error_reporting(-1); set_error_handler([$this, 'handleError']); set_exception_handler([$this, 'handleException']); register_shutdown_function([$this, 'handleShutdown']); if (! $app->environment('testing')) { ini_set('display_errors', 'Off'); } } }
異常轉(zhuǎn)化
laravel 的異常處理均由函數(shù) handleException 負(fù)責(zé)。
PHP7 實(shí)現(xiàn)了一個(gè)全局的 throwable 接口,原來的 Exception 和部分 Error 都實(shí)現(xiàn)了這個(gè)接口, 以接口的方式定義了異常的繼承結(jié)構(gòu)。于是,PHP7 中