首頁  >  文章  >  後端開發  >  php異常處理和錯誤處理區別

php異常處理和錯誤處理區別

(*-*)浩
(*-*)浩原創
2019-09-16 10:21:394209瀏覽

"錯誤"和"異常"的概念十分相似,很容易混淆,"錯誤"和"異常"都表明了項目出了問題,都會提供相關的信息,並且都有錯誤類型。

php異常處理和錯誤處理區別

然而,"異常機制"是在"錯誤機制"後才出現的,"異常"是避免"錯誤"的不足。 (推薦學習:PHP程式設計從入門到精通

比較重要的一點就是因為"錯誤"的資訊不豐富,我們見過最多的函數說明就是: 成功時候返回* **, 錯誤的時候返回FALSE, 然而一個函數出錯的原因可能有多種, 出錯的種類更有多種. 一個簡單的FALSE, 並不能把具體的錯誤信息告訴調用者.

PHP中將程式碼本身異常(一般是環境或語法非法所致)成為錯誤,將運行中出現的邏輯錯誤稱為異常(Exception)錯誤是沒法通過程式碼處理的,而異常則可以透過try /catch處理。

異常

異常是Exception類別的對象,在遇到無法修復的狀況時拋出,出現問題時,異常用於主動出擊,委託職責,異常還可用於防守,預測潛在的問題,減輕其影響。

Exception物件有兩個主要的屬性:一個是訊息,另一個是數字程式碼。我們分別可以用getCode()和getMessage()來取得這兩個屬性。

異常處理程序

那麼我們應該如何捕捉每個可能拋出的例外呢? PHP允許我們註冊一個全域異常處理程序,捕獲所有未被捕獲的異常。 異常處理程序使用set_exception_handler()函數註冊(這裡使用匿名函數)。

set_exception_handler(function (Exception $e)
{
	echo "我自己定义的异常处理".$e->getMessage();
});
throw new Exception("this is a exception");
 
//运行结果:我自己定义的异常处理this is a exception

錯誤

除了例外之外,PHP還提供了用於報告錯誤的函數。 PHP能觸發不同類型的錯誤,例如致命錯誤、執行階段錯誤、編譯時錯誤、啟動錯誤、使用者觸發的錯誤。可以在php.ini中設定錯誤報告方式(這裡不做多的解釋)

錯誤處理程序

與異常處理程序一樣,我們也可以使用set_error_handler()註冊全域錯誤處理程序,使用自己的邏輯方式攔截並處理PHP錯誤。 我們要在錯誤處理程序中呼叫die()或exit()函數。如果不調用,PHP腳本會從出錯的地方繼續向下執行。如下:

set_error_handler(function ($errno,$errstr,$errfile,$errline)//常用的四个参数
{
	echo "错误等级:".$errno."<br>错误信息:".$errstr."<br>错误的文件名:".$errfile."<br>错误的行号:".$errline;
	exit();
});
 
trigger_error("this is a error");//自行触发的错误
 
echo &#39;正常&#39;;

以上是php異常處理和錯誤處理區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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