PHP ERROR_PHP 处理错误函数
錯誤級別
Fatal Error:致命錯誤(腳本終止運行)E_ERROR //致命的運行錯誤,錯誤無法恢復(fù),暫停執(zhí)行腳本
E_CORE_ERROR //PHP啟動時初始化過程中的致命錯誤
E_COMPILE_ERROR //編譯時致命性錯,就像由Zend腳本引擎生成了一個E_ERROR
E_USER_ERROR //自定義錯誤消息。像用PHP函數(shù)trigger_error(錯誤類型設(shè)置為:E_USER_ERROR)
Parse Error:編譯時解析錯誤,語法錯誤(腳本終止運行)E_PARSE //編譯時的語法解析錯誤
Warning Error:警告錯誤(僅給出提示信息,腳本不終止運行)E_WARNING //運行時警告 (非致命錯誤)。
E_CORE_WARNING //PHP初始化啟動過程中發(fā)生的警告 (非致命錯誤) 。
E_COMPILE_WARNING //編譯警告
E_USER_WARNING //用戶產(chǎn)生的警告信息
Notice Error:通知錯誤(僅給出通知信息,腳本不終止運行)E_NOTICE //運行時通知。表示腳本遇到可能會表現(xiàn)為錯誤的情況.
E_USER_NOTICE //用戶產(chǎn)生的通知信息。
錯誤顯示級別
//錯誤級別
ERROR = E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_PARSE
error_reporting(E_ALL);//設(shè)置異常錯誤顯示等級0為禁止錯誤
error_reporting(0);//禁用錯誤報告
error_reporting(E_ERROR | E_WARNING | E_PARSE);//報告運行時錯誤
error_reporting(E_ALL); //報告所有錯誤
error_reporting(E_ALL~E_NOTICE);//除去提醒處理
Try 和 catch
使用異常的函數(shù)應(yīng)該位于 "try" 代碼塊內(nèi)。如果沒有觸發(fā)異常,則代碼將照常繼續(xù)執(zhí)行。但是如果異常被觸發(fā),會拋出一個異常。
"catch" 代碼塊會捕獲異常,并創(chuàng)建一個包含異常信息的對象。
try catch 捕捉不到fatal error致命錯誤
只有拋出異常才能被截獲,如果異常拋出了卻沒有被捕捉到,就會產(chǎn)生一個fatal error
父類可以捕獲子類拋出的異常
try{//業(yè)務(wù)代碼
}catch(Exception $e){//捕獲異常,輸出錯誤信息
echo ‘Message: ‘ .$e->getMessage();
}
可以自定義異常類,當必須繼承?Exception 類,,捕獲 catch 先寫子類(級別低的),后寫父類(級別高的),try 中可以 嵌套 try{}catch(Exception$e){}
class customException extends Exception{public functionerrorMessage()
{//錯誤信息
$errorMsg = ‘錯誤行號 ‘.$this->getLine().‘ in ‘.$this->getFile().‘: ‘.$this->getMessage().‘ 不是一個合法的 E-Mail 地址‘;return $errorMsg;
}
}$email = "someone@example...com";try{//檢測郵箱
if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE)
{//如果是個不合法的郵箱地址,拋出異常
throw new customException($email); //throw - 里規(guī)定如何觸發(fā)異常。每一個 "throw" 必須對應(yīng)至少一個 "catch"。
}
}catch (customException $e){//輸出錯誤信息
echo $e->errorMessage();
}catch(Exception $e)
{//多個異常,先捕獲子類的,父類放最后
echo $e->getMessage();
}
PHP異常處理函數(shù)
set_error_handler(error_function,error_types)
設(shè)置用戶自定義的錯誤處理函數(shù)。該函數(shù)用于創(chuàng)建運行期間的用戶自己的錯誤處理方法。該函數(shù)返回舊的錯誤處理程序,如果失敗則返回 NULL。如果存在該方法,相應(yīng)的error_reporting()就不能在使用了
error_function(error_level,error_message,error_file,error_line,error_context)
不僅可以接受函數(shù),還可以接受?類的方法(公開的靜態(tài)方法 及 公開的非靜態(tài)方法 都可以),但需要以?數(shù)組形式?傳遞,數(shù)組的第一值為“類名”,第二個參數(shù)為“方法名”
參數(shù)說明:
error_level
必需的。規(guī)定用戶自定義的錯誤的錯誤報告級別。必須是值數(shù)字。可能的錯誤報告級別詳見下面的表格。
error_message
必需的。規(guī)定用戶自定義的錯誤的錯誤消息。
error_file
可選。規(guī)定發(fā)生錯誤的文件名。
error_line
可選。規(guī)定發(fā)生錯誤的行號。
error_context
可選。規(guī)定指向活躍符號表中發(fā)生錯誤的數(shù)組。換句話說,error_context 將包含一個說明每個變量引發(fā)錯誤的存在范圍的數(shù)組。
error_level??錯誤報告級別
2
E_WARNING
運行時非致命的錯誤。沒有停止執(zhí)行腳本。
8
E_NOTICE
運行時的通知。腳本發(fā)現(xiàn)可能是一個錯誤,但也可能在正常運行腳本時發(fā)生。
256
E_USER_ERROR
用戶生成的致命錯誤。這就如同由程序員使用 PHP 函數(shù) trigger_error() 生成的 E_ERROR。
512
E_USER_WARNING
用戶生成的非致命錯誤。這就如同由程序員使用 PHP 函數(shù) trigger_error() 生成的 E_WARNING。
1024
E_USER_NOTICE
用戶生成的通知。這就如同由程序員使用 PHP 函數(shù) trigger_error() 生成的 E_NOTICE。
4096
E_RECOVERABLE_ERROR
可捕獲的致命錯誤。這就如同一個可以由用戶定義的句柄捕獲的 E_ERROR(見 set_error_handler())。
classApp{//error handler function
function customError($errno, $errstr, $errfile, $errline) {echo "Custom error: [$errno] $errstr
";echo "Error on line $errline in $errfile
";echo "Ending Script";die();
}
}//set error handler
set_error_handler(array("App","customError"));$test=2;//trigger error
if ($test > 1) {trigger_error("A custom error has been triggered");
}
register_shutdown_function(callback_function,parameter)
捕獲PHP的錯誤:Fatal Error、Parse Error等,這個方法是PHP腳本執(zhí)行結(jié)束前最后一個調(diào)用的函數(shù),比如腳本錯誤、die()、exit、異常、正常結(jié)束都會調(diào)用。通過這個函數(shù)就可以在腳本結(jié)束前判斷這次執(zhí)行是否有錯誤產(chǎn)生,這時就要借助于一個函數(shù):error_get_last();這個函數(shù)可以拿到本次執(zhí)行產(chǎn)生的所有錯誤。error_get_last();返回的信息:
[type]?????????? - 錯誤類型
[message] - 錯誤消息
[file]????????????? - 發(fā)生錯誤所在的文件
[line] ? ? ? ? ? ? - 發(fā)生錯誤所在的行
當前函數(shù)要在代碼執(zhí)行前執(zhí)行,否則無法調(diào)用。函數(shù)沒有返回值,如果傳入的callback不是可調(diào)用的,那么將會產(chǎn)生一個?E_WARNING?級別的錯誤。
參數(shù)說明:
callback_function
待注冊的中止回調(diào),中止回調(diào)是作為請求的一部分被執(zhí)行的,因此可以在它們中進行輸出或者讀取輸出緩沖區(qū)。
parameter
可以通過傳入額外的參數(shù)來將參數(shù)傳給中止函數(shù)
register_shutdown_function(‘zyfshutdownfunc‘);functionzyfshutdownfunc()
{if ($error =error_get_last()) {echo ‘輸出錯誤:register_shutdown_function: Type:‘ . $error[‘type‘] . ‘ Msg: ‘ . $error[‘message‘] . ‘ in ‘ . $error[‘file‘] . ‘ on line ‘ . $error[‘line‘] . ‘‘;
}
}
set_exception_handler(exception_function)
設(shè)置默認的異常處理程序,用在沒有用try/catch塊來捕獲的異常,也就是說不管你拋出的異常有沒有人捕獲,如果沒有人捕獲就會進入到該方法中,并且在回調(diào)函數(shù)調(diào)用后異常會中止。返回之前定義的異常處理程序的名稱,或者在錯誤時返回?NULL。 如果之前沒有定義錯誤處理程序,也會返回?NULL。
exception_function 參數(shù)說明:規(guī)定未捕獲的異常發(fā)生時調(diào)用的函數(shù)。該函數(shù)必須在調(diào)用 set_exception_handler() 函數(shù)之前定義。這個異常處理函數(shù)需要需要一個參數(shù),即拋出的 exception 對象。
總結(jié)
以上是生活随笔為你收集整理的PHP ERROR_PHP 处理错误函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苹果电脑装双系统条件(苹果电脑可以装双系
- 下一篇: php接收文件,如何通过php 发送与接