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