這篇文章介紹的內容是關於PHP的錯誤處理及實現,現在分享給大家,有需要的可以朋友參考一下
1.php的錯誤,警告,異常處理如何實現,那些函數用於處理對應的錯誤
php 異常提示分為三類error/warning/notice
錯誤補充:
Fatal Error:致命錯誤(腳本終止運行)
E_ERROR // 致命的運作錯誤,錯誤無法恢復,暫停執行腳本
E_CORE_ERROR // PHPCOMLE_FERle由Zend腳本引擎產生了一個E_ERROR
E_USER_ERROR // 自訂錯誤訊息。像是用PHP函數trigger_error(錯誤類型設定為:E_USER_ERROR)
E_RECOVERABLE_ERROR //可被捕捉的致命錯誤。它表示發生了一個可能非常危險的錯誤,但還沒有導致PHP引擎處於不穩定的狀態。
Parse Error:編譯時解析錯誤,語法錯誤(腳本終止運行)
E_PARSE //編譯時的語法解析錯誤
警告補充:警告錯誤(僅給出提示訊息,腳本不終止執行)
E_WARNING // 運作時警告(非致命錯誤)。
E_CORE_WARNING // PHP初始化啟動過程中發生的警告 (非致命錯誤) 。
E_COMPILE_WARNING // 編譯警告
E_USER_WARNING // 使用者產生的警告訊息
例外通知補充:通知錯誤(僅給予通知訊息,腳本不終止執行)
E_NOTICE // 運行時通知。表示腳本遇到可能會表現為錯誤的情況. E_USER_NOTICE // 使用者產生的通知訊息。
php錯誤處理實作:
register_shutdown_function('funcName') // 參數是需要捕獲錯誤的函數名稱,但是register_shutdown_function,只能捕捉執行時間的致命錯誤,不能捕獲解釋時的執行錯誤,因為它時程式執行完成之後執行的函數(例如語法錯誤,這種運行時就會產生的錯誤時不會被捕捉的)
set_error_handler('funcName') //參數是需要捕獲的回調的函數名,區別於register_shutdown_function,它是在函數運行期間捕獲到錯誤
當目標文件執行遇到錯誤的時候,系統會回調指定函數:
範例:
<?php register_shutdown_function( "fatal_handler" ); set_error_handler("error_handler"); define('E_FATAL', E_ERROR | E_USER_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_RECOVERABLE_ERROR| E_PARSE ); //获取fatal error function fatal_handler() { $error = error_get_last(); if($error && ($error["type"]===($error["type"] & E_FATAL))) { $errno = $error["type"]; // $errfile = $error["file"]; $errline = $error["line"]; $errstr = $error["message"]; error_handler($errno,$errstr,$errfile,$errline); } } //获取所有的error function error_handler($errno,$errstr,$errfile,$errline){ $str=<<<EOF "errno":$errno "errstr":$errstr "errfile":$errfile "errline":$errline EOF; //获取到错误可以自己处理,比如记Log、报警等等 echo $str; } //error_get_last() 捕获到的执行错误结果 //error_clear_last() 清除最后一次产生的错误信息 //上面两者可以捕获所有错误,警告, 异常,但作性能考虑,不建议使用其捕获警告异常
相關推薦:
以上是php 錯誤處理及實作 - CSDN博客的詳細內容。更多資訊請關注PHP中文網其他相關文章!