天天看點

PHP的錯誤級别與自定義錯誤處理

級别常量 錯誤值 錯誤描述
E_ERROR 1 緻命的運作錯誤(阻止腳本繼續運作)
E_WARNING 2 運作時警告
E_PARSE 4 從文法中解析錯誤
E_NOTICE 8 運作時注意消息
E_CORE_ERROR 16 PHP啟動時初始化過程中的緻命錯誤
E_CORE_WARNING 32 PHP啟動時初始化過程中的警告
E_COMPILE_ERROR 64 編譯時緻命錯誤
E_COMPILE_WARNING 128 編譯時警告
E_USER_ERROR 256 使用者自定義的緻命錯誤
E_USER_WARNING 512 使用者自定義的警告
E_USER_NOTICE 1024 使用者自定義的提醒
E_STRICT 2048 編碼标準化警告
E_ALL 6143 所有的錯誤、警告和注意消息

以下級别的錯誤不能由使用者定義的函數來處理:

E_ERROR 、

E_PARSE 、

E_CORE_WARNING 、

E_COMPILE_ERROR 、

E_COMPILE_WARNING

和在 調用 set_error_handler() 函數所在檔案中産生的大多數 E_STRICT 。

如果錯誤發生在腳本執行之前(比如檔案上傳時),将不會 調用自定義的錯誤處理程式因為它尚未在那時注冊。

<?php
set_error_handler('my_error');
$message = '';
function my_error($error_type, $error_message, $error_file, $error_line)
{
    global $message;
    $message = "錯誤類型{$error_type},錯誤消息{$error_message},錯誤檔案{$error_file},在{$error_line}行".PHP_EOL;
}
gettype($a);
echo '111';
gettype();
echo '222';
echo $message;
EXIT;
           
php