php优秀框架codeigniter学习系列——异常和错误处理机制
這篇介紹下CI框架的異常和錯誤處理機制。
在入口文件index.php中,根據設置的環境參數設置error_reporting的范圍,和是否顯示錯誤。
在CI初始化程序CodeIgniter.php中,設置自定義的錯誤處理方法,自定義的異常處理方法,自定義的php中止處理方法。
1 set_error_handler('_error_handler');
2 set_exception_handler('_exception_handler');
3 register_shutdown_function('_shutdown_handler');
_error_handler,_exception_handler,_shutdown_handler均在system/core/Common.php中定義。
_error_handler
當php程序出錯時,_error_handler會捕獲這個錯誤。得到的錯誤信息包括錯誤級別,錯誤信息,出錯文件地址,出錯行數。對于E_ERROR | E_PARSE | E_COMPILE_ERROR | E_CORE_ERROR | E_USER_ERROR級別的錯誤,會設置http請求返回code為500。對于error_reporting()為0(可能是生產環境也可能是函數前加有忽略錯誤標志@)的或者錯誤級別沒有在index.php中設置的,直接返回。否則會記錄錯誤日志。如果設置了display_errors可以展示錯誤,則顯示錯誤信息給用戶看到。
值得一提的是,官方文檔有說明。以下級別的錯誤不能由用戶定義的函數來處理: E_ERROR、 E_PARSE、 E_CORE_ERROR、 E_CORE_WARNING、 E_COMPILE_ERROR、 E_COMPILE_WARNING。程序通常會直接拋出一個錯誤信息。無論是否開啟error_reporting,都不能記錄到日志中。
_exception_handler
用于捕獲異常。常常由throw new exception("string...")觸發。它也會調用日志處理類來記錄日志。它和_error_handler傳遞給日志處理類的日志類別參數都是error。如果設置了display_errors可以展示錯誤,則顯示相關異常信息給用戶看到。
_shutdown_handler
程序執行中止時候(不管有沒有錯誤),會調用這個方法。該方法會去程序運行中出現的錯誤,如果有,傳遞給_error_handler函數處理。
除了這三個異常捕獲的函數。CI框架還提供了主動拋出錯誤頁面的函數。在system/core/Common.php中定義了show_error,show_404。
show_error可以設置錯誤信息,設置Http狀態碼,出錯顯示模版等。
show_404可以設置404錯誤顯示模板,是否記錄日志等。
總結
以上是生活随笔為你收集整理的php优秀框架codeigniter学习系列——异常和错误处理机制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 干猴头菇的做法(猴头菇的吃法和泡法)
- 下一篇: 皋怎么读(皋市读哪个音)