Fatal error 一般是不需要捕獲的, 但是在一個復雜的程序中, 如果偶然出現內存不足導致fatal error就難以處理了.
比如. fatal error 出在MySQL類中fetch的時候. 這個時候就很難定位到真正問題所在了.
PHP異常處理中 可以通過set_error_handler來捕獲. 但是卻只能捕獲 NOTICE/WARNING級別的錯誤, 對於E_ERROR是無能為力的.
register_shutdown_function 能解決set_error_handler的不足.
通過此函數注冊好程序結束回調函數, 就可以捕獲平時捕獲不到的錯誤了. 再通過 error_get_last 對錯誤進行判斷. 就容易找出難以定位的問題了.
.代碼如下:
function shutdown_function()
{
$e = error_get_last();
print_r($e);
}
register_shutdown_function('shutdown_function');