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