php學習筆記--error
不同的錯誤處理方法:
簡單的die()語句自定義錯誤函數和錯誤觸發器錯誤報告
基本的錯誤處理:使用die()函數
if(!file_exists("welcome.txt")){
die("FIle not found");
}else{
$file=fopen("welcome.txt","r");
}
或者
$file=fopen("webdictionary.txt","r") or die("Unable to open file!");
die(status):如果status是字符串,則該函數會在推出前輸出字符串。
如果status是證書,這個值會被用作退出狀態。退出狀態的值在0到254之間。退出狀態255由php保留,不會被使用。狀態0用於成功地終止程序。
創建自定義錯誤處理器:
該函數必須有能力處理至少兩個參數(error level和error message),但是可以接受最多五個參數(可選的:file,line-number以及error context)。
error_function(error_level,error_message,error_file,error_line,error_context)//錯誤報告級別,錯誤消息,發送錯誤的文件名,行號,規定一個數組(包含了當錯誤發生時在用的每個變量以及它們的值)
值 |
常量 |
描述 |
2
E_WARNING
非致命的 run-time 錯誤。不暫停腳本執行。
8
E_NOTICE
Run-time 通知。腳本發現可能有錯誤發生,但也可能在腳本正常運行時發生。
256
E_USER_ERROR
致命的用戶生成的錯誤。這類似於程序員使用 PHP 函數 trigger_error() 設置的 E_ERROR。
512
E_USER_WARNING
非致命的用戶生成的警告。這類似於程序員使用 PHP 函數 trigger_error() 設置的 E_WARNING。
1024
E_USER_NOTICE
用戶生成的通知。這類似於程序員使用 PHP 函數 trigger_error() 設置的 E_NOTICE。
4096
E_RECOVERABLE_ERROR
可捕獲的致命錯誤。類似 E_ERROR,但可被用戶定義的處理程序捕獲。(參見 set_error_handler())
8191
E_ALL
所有錯誤和警告,除級別 E_STRICT 以外。
(在 PHP 6.0,E_STRICT 是 E_ALL 的一部分)
function customError($errno,$errstr){
echo "
Error:[$errno] $errstr
";
echo "Ending Script";
die();
}
當上述錯誤被觸發時,它會取得錯誤級別和錯誤消息。然後它會輸出錯誤級別和消息,並終止腳本。現在,已經創建了一個錯誤處理函數,我們需要確定在何時觸發該函數。
Set Error Handler:
php的默認錯誤處理程序是內奸的錯誤處理程序。可以修改錯誤處理程序,使其僅應用到某些錯誤,這樣腳本就可以不同的方式來處理不同的錯誤。
本例中,我們打算針對所有錯誤來使用我們的自定義錯誤處理程序。
set_error_handle(“customError”);
當處理所有錯誤時,set_error_handler()僅需要一個參數,可以添加第二個參數來規定錯誤級別。
觸發錯誤:
當用戶的輸入無效時觸發錯誤。由trigger_error()完成。
$test=2;
if($test>1){
trigger_error("Value must be 1 or below");//大於1時觸發錯誤
}
可能的錯誤類型:
E_USER_ERROR:
E_USER_WARNING:
E_USER_NOTICE: