首頁  >  文章  >  後端開發  >  php 錯誤處理及實作 - CSDN博客

php 錯誤處理及實作 - CSDN博客

不言
不言原創
2018-04-13 10:23:091413瀏覽

這篇文章介紹的內容是關於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(&#39;E_FATAL&#39;,  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錯誤處理,自動載入,堆疊記憶體以及運行模式

PHP錯誤處理實例方法

#PHP錯誤與異常調試視訊教學資源分享













#

以上是php 錯誤處理及實作 - CSDN博客的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn