1. 程式人生 > >PHP知識點--錯誤處理

PHP知識點--錯誤處理

spl 使用 日誌文件 都是 表示 兩件 err 用戶 錯誤信息

一、錯誤的分類

語法錯誤:
程序沒法運行,直接提示語法錯誤。

運行時錯誤:
只有程序運行到某行,或在某些特定的情形下運行才會發生的錯誤。

邏輯錯誤:
程序從頭到尾運行都沒有發生(並提示)錯誤,但程序運行計算的結果是錯誤的。

我們程序員主要面對的和要處理(應付)的錯誤,就是運行時錯誤。

二、錯誤的分級
系統錯誤:
E_ERROR:系統嚴重錯誤
一發生,程序立即停止執行。
該錯誤一般希望馬上。
E_WARNING:系統警告
一發生,提示錯誤,並繼續執行。
通常該錯誤希望能夠在“下一工作日”去處理掉(解決)。
E_PARSE:語法錯誤
一發生,提示錯誤,而且代碼完全不會運行——在運行之前先檢查語法。
E_NOTICE:系統提示


一發生,提示錯誤,並繼續執行。
發個郵件通知一下,自己安排時間有空去解決。

三、用戶自定義錯誤
只有3個:
E_USER_ERROR;

E_USER_WARNING;

E_USER_NOTICE;
我們可以在程序中,自己創建(生成)錯誤——是為了針對某些數據的不合理情形,而創建的錯誤。
比如:讓用戶填寫年齡, 填18是ok,但填寫188就是不合理——從數字角度本身是沒有問題。
其他:
E_ALL; 代表所有錯誤——表示它可以“包括”錯誤。
E_STRICT: 代表“嚴格性”語法檢查錯誤——某種語法是可以執行的,但在當前的php版本中是不歡迎使用。

四、錯誤的觸發:
1、正常觸發:
程序運行時確實發生了運行時錯誤——也可能是語法檢查錯誤。
2、人工觸發:


就是由程序員通過程序代碼而“產生”一個錯誤。
應用中,通常是需要檢測(判斷)數據的有效性,以決定是否觸發相應錯誤


五、錯誤的顯示控制
網頁中顯示(提示)錯誤信息,是可以進行控制的,有2種途徑:
1,在php.ini文件中設定,對所有php程序都有效;
2,在當前腳本文件中,只對當前腳步文件有效。

錯誤的顯示有2個方面可以進行控制;
1,設定是否顯示:display_error:
2,設定顯示哪些級別的錯誤——依賴與第一項設定為顯示的情況。


六、記錄錯誤日誌
記錄錯誤日誌有2種途徑:
1,在Php.ini文件中設定:
可見,頁面中顯示的錯誤提示內容,和日誌文件中記錄的錯誤信息內容,一樣。
error_log還有一個特殊值可以使用:
error_log = syslog; //此時不會記錄錯誤日誌文件,而是把錯誤信息寫入到系統錯誤日誌中
2,在當前腳本文件中:


ini_set(“log_errors” , On); //或者Off
ini_set(“error_log”, ‘err1.log’); //後綴隨便用
ini_set(“error_log”, ‘err2.txt’);
ini_set(“error_log”, ‘err3.html’);
int_set(“error_log”, syslog); //記錄到操作系統日誌中。
自定義錯誤處理
以上的錯誤處理,不管是顯示錯誤,還是記錄錯誤日誌,都是php語言內部實現的。
我們只是幾個簡單的設定是否顯示或是否記錄或顯示哪些,或記錄到哪裏。
則:
自定義錯誤處理,就可以讓我們自己完全控制錯誤的提示內容!
做法非常簡單:
1,設定要用來進行自定義處理錯誤的自定義函數名;
2,自己去定義該函數,並在其中進行任何錯誤信息的輸出(或記錄)。
這兩件事做好後,一旦發生錯誤,則系統就會調用該函數去執行裏面的代碼——想幹嘛幹嘛。

PHP知識點--錯誤處理