三 、 Exception 異常的回調函數
set_exception_handler(callback functionName) //發(fā)生 Exception 或其 子類的 異常是會調用此函數
function exceptionHandlerFun($errObj){ // Exception 異常的回調函數 只有一個參數,就是拋出的異常對象。
//.......
}
Exception 異常的回調函數并不能像 set_error_handler 的回調函數那樣通過返回 true 來使異常被消除,即使回調函數處理了異常,后繼代碼也不會被繼續(xù)執(zhí)行,因此想繼續(xù)執(zhí)行后續(xù)代碼必須使用 try-catch。
但是有一個例外:腳本結束回調函數可以被執(zhí)行,拋出的異常即使沒有被處理,該回調函數也是能被執(zhí)行的。
register_shutdown_function(callback functionName[,argument1,argument2,...]);
例如:
function shutdownfunction(){
echo 'script is end';
}
register_shutdown_function("shutdownfunction");
因為 shutdownfunction() 在腳本結束時被執(zhí)行,所以 這個回調函數之內可以調用腳本中任意位置的函數,即使該函數定義在 錯誤拋出位置之后(函數定義是在 腳本編譯期完成的)。
四、trigger_error(string errorMsg[,int user_error_type])
該函數用于主動觸發(fā)一個錯誤: user_error_type 只能是 E_ALL、E_USER_ERROR、 E_USER_WARNING、 E_USER_NOTICE 或其組合的值。
set_error_handler(callbeck functionName[,user_error_type]); // 為 trigger_error() 設置一個回調函數來處理錯誤,包括系統拋出的錯誤和用戶使用 trigger_error() 函數觸發(fā)的錯誤。
可選參數 user_error_type :
如果設定此參數,則 trigger_error 拋出的錯誤類型符合 在user_error_type 的定義范圍才能觸發(fā)回調函數。
這個值的設置類似于 error_reporting() 函數 。
第一個參數(callbeck functionName):
一個函數名,該函數 可以有 5 個參數,其中前 2 個必選,依次是:
trigger_error 拋出的 user_error_type、trigger_error 拋出的 errorMsg、拋出錯誤的文件的絕對路勁、拋出錯誤的行號、拋出錯誤時的上下文環(huán)境 (一個數組,包含了trigger_error() 所在作用域內的所有變量、函數、類等數據 )
回調函數的返回值: 如果返回 false ,系統錯誤處理機制仍然繼續(xù)拋出該錯誤,返回 true 或 無返回值 則消除錯誤。
trigger_error() 觸發(fā)的錯誤不會被 try-catch 異常捕獲語句捕獲。
本文導航
- 第1頁: 首頁
- 第2頁: try-catch
- 第3頁: Exception 異常的回調函數