PHP錯誤機制

2021-08-07 13:35:43 字數 2009 閱讀 4214

在實際開發中,錯誤及異常捕捉僅僅靠try{}catch()是遠遠不夠的。 所以引用以下幾中函式。

我們先來說異常:

首先要明白異常跟錯誤是不一樣的,異常是出現正常邏輯之外的情況,而錯誤是指執行時出錯了,比如,使用了乙個未定義的變數等,異常需要丟擲(throw)才能**捉到,而錯誤會導致程式執行終止

1、通常處理異常的方式是使用try{}catch{}去捕捉有throw丟擲的異常

try  

catch(exception $e)  

2、通過set_exception_handler函式設定異常處理函式,在這種情況下,即使沒有try{}catch{},throw丟擲的異常也能由set_exception_handler設定的函式自動捕捉

set_exception_handler('exceptionhandler');  

throw

new exception("kkkkkkkkkkkkkkkk");  

function exceptionhandler(exception $exception)  

接下來討論錯誤:

通常程式出錯了,php會輸出出錯的資訊來幫助除錯,但是這個資訊的輸出是可以通過函式error_reporting()來控制的。在php中錯誤是分等級和種類的,下面是所有錯誤種類的說明:

e_all - 所有的錯誤和警告(不包括 e_strict)

e_error - 致命性的執行時錯誤

e_warning - 執行時警告(非致命性錯誤)

e_parse - 編譯時解析錯誤

e_notice - 執行時提醒(這些經常是你**中的bug引起的,也可能是有意的行為造成的。)

e_strict - 編碼標準化警告,允許php建議如何修改**以確保最佳的互操作性向前相容性。

e_core_error - php啟動時初始化過程中的致命錯誤

e_core_warning - php啟動時初始化過程中的警告(非致命性錯)

e_compile_error - 編譯時致命性錯

e_compile_warning - 編譯時警告(非致命性錯)

e_user_error - 使用者自定義的錯誤訊息

e_user_warning - 使用者自定義的警告訊息

e_user_notice - 使用者自定義的提醒訊息

如果設定了error_reporting(e_notice),那麼程式只會輸出e_notice等級的資訊,一般我們使用的時候只需要設定error_reporting(e_all&!e_warning)就行了

上面我們看到有一種錯誤叫使用者自定義的錯誤訊息,這是什麼呢?我們先看乙個例子

set_error_handler('errorhandler');  

trigger_error("aaaaaaassssssssssss",e_user_error);  

function errorhandler($errno,$errstr)  

"white-space:pre">  

}  

輸出結果:

innnnnnnni:aaaaaaassssssssssss  

trigger_error()就是用來丟擲使用者自定義錯誤訊息的函式,通過這個我們能拋出自定義的一些訊息被當作錯誤來處理,比如嚴重的邏輯問題

上面的程式我們看到,當程式出錯時,除了讓php預設輸出出錯資訊外,我們還能設定自己的錯誤處理函式,設定的方法就是set_error_handler(),下面來看個例子

set_error_handler('errorhandler');  

echo

"dddddddddddd

";  

echo

$cc;//$cc沒有定義,echo會出錯

function errorhandler($errno,$errstr)  

}  

輸出結果:dddddddddddd

innnnnnnni:undefined variable: cc

PHP 自定義錯誤機制

set error handler 函式設定使用者自定義的錯誤處理函式,該函式用於建立執行時期間的使用者自己的錯誤處理方法,該函式會返回舊的錯誤處理程式,若失敗,則返回 null。下面來看一些例子.set error handler php從4.1.0開始提供了自定義錯誤處理控制代碼的功能函式set...

PHP 錯誤處理機制

在日常的專案開發過程中,總是會出現一些我們意想不到的異常錯誤,如果我們對此沒有進行相對完善的處理,那麼程式看上去也很不專業,也很可能就會成為別人攻擊系統的有效資訊 有些錯誤異常會終止指令碼執行,這個時候如果沒有一些錯誤提示資訊的話,那麼我們只能從頭開始看 了,要知道專案中成百上千行的 對我們來說是件...

PHP 錯誤處理機制

在日常的專案開發過程中,總是會出現一些我們意想不到的異常錯誤,如果我們對此沒有進行相對完善的處理,那麼程式看上去也很不專業,也很可能就會成為別人攻擊系統的有效資訊 有些錯誤異常會終止指令碼執行,這個時候如果沒有一些錯誤提示資訊的話,那麼我們只能從頭開始看 了,要知道專案中成百上千行的 對我們來說是件...