3 回答

TA貢獻2041條經(jīng)驗 獲得超4個贊
簡單回答:你做不到。參見手冊:
使用用戶定義的函數(shù)無法處理以下錯誤類型:E_ERROR,E_PARSE,E_CORE_ERROR,E_CORE_WARNING,E_COMPILE_ERROR,E_COMPILE_WARNING,以及調(diào)用set_error_handler()的文件中引發(fā)的大部分E_STRICT。
對于其他每個錯誤,您都可以使用 set_error_handler()
編輯:
既然看起來有關于這個主題的討論,關于使用register_shutdown_function
,我們應該看看處理的定義:對我來說,處理錯誤意味著捕獲錯誤并以一種“好”的方式做出反應用戶和底層數(shù)據(jù)(數(shù)據(jù)庫,文件,Web服務等)。
使用register_shutdown_function
您無法處理調(diào)用它的代碼中的錯誤,這意味著代碼仍然會在發(fā)生錯誤時停止工作。但是,您可以向用戶顯示錯誤消息而不是白頁,但是您不能回滾代碼在失敗之前執(zhí)行的任何操作。

TA貢獻1818條經(jīng)驗 獲得超11個贊
您可以使用以下代碼跟蹤這些錯誤:
(如果它們出現(xiàn)在解析錯誤,只能抓到其他通過腳本文件include()或require(),或把這個代碼放到一個auto_prepend_file其他的答案也提到。)
function shutdown() {
$isError = false;
if ($error = error_get_last()){
switch($error['type']){
case E_ERROR:
case E_CORE_ERROR:
case E_COMPILE_ERROR:
case E_USER_ERROR:
$isError = true;
break;
}
}
if ($isError){
var_dump ($error);//do whatever you need with it
}
}
register_shutdown_function('shutdown');
- 3 回答
- 0 關注
- 534 瀏覽
添加回答
舉報