指的是系統(或者使用者)在對某些**進行執行的時候,發現有錯誤,就會通過錯誤處理的形式告知程式設計師
錯誤分類
1)語法錯誤:在編譯過程中不通過,所以**不會執行(parse error)
2) 執行時錯誤:**編譯通過,但是**在執行的過程中會出現一些條件不滿足導致的錯誤(runtime error)
3)邏輯錯誤:程式設計師在寫**的時候不夠規範,出現了一些邏輯性的錯誤,導致**正常執行,但是得不到想要的結果
錯誤代號
(1)系統錯誤:
e_parse:編譯錯誤,**不會執行
e_error:fatal error,致命錯誤,會導致**不能正確繼續執行(出錯的位置斷掉)
e_warning:警告錯誤,不會影響**執行,但是可能得到意想不到的結果
e_notice:通知錯誤,不會影響**執行
(2)使用者錯誤:e_user_error、e_user_waring、e_user_notice
使用者在使用自定義錯誤觸發的時候,會使用到的錯誤代號(系統不會用到)
(3)其他:e_all,代表著所有的錯誤(通常在進行錯誤控制的時候使用比較多),建議在開發過程中(開發環境)使用
所有以e開頭的錯誤常量(代號)其實都是由乙個位元組儲存,然後每一種錯誤佔據乙個對應的位,如果想進行一些錯誤的控制,可以使用位運算進行操作
排除通知級別notice:e_all&~e_notice
只要警告和通知:e_waring | e_notice
錯誤觸發
執行時觸發
人為觸發
錯誤顯示設定
在php中,其實有兩種方式來設定當前指令碼的錯誤處理
1、php配置檔案:全域性配置:php.ini檔案
display_errors:是否顯示錯誤
erro_reporting:顯示什麼級別的錯誤
2、可以在執行的php指令碼中設定:在指令碼中定義的配置級別比配置檔案高(通常開發當中都會在**中去進行控制和配置)
error_reporting:設定對應的錯誤顯示級別
ini_set(『配置檔案中的配置項』,配置值),如:
ini_set(『error_reporting』,e_all);
ini_set(『display』,1);
錯誤日誌設定
在生產環境中,一般不顯示錯誤(錯誤也比較少),但是又不可避免會出現錯誤(測試的時候不會發現所有問題),這個時候不希望客戶看到,但是又希望捕捉到可以讓後台程式設計師去修改:需要儲存到日誌檔案中,需要在php配置檔案中或者**中(ini_set)設定對應
error_log配置項:
1、開啟日誌功能
2、指定日誌儲存路徑
自定義錯誤處理
最簡單的錯誤處理:trigger_errors()函式,但是該函式不會阻止系統報錯
php系統提供了一種使用者處理錯誤的機制:使用者自定義錯誤處理函式,然後將該函式增加到系統錯誤處理的控制代碼中,然後系統會在碰到錯誤之後,使用使用者定義的錯誤函式
1、如何將使用者自定義的函式放到系統中?set_erro_handler()
2、自定義錯誤處理函式,系統有要求
**實現:
1、自定義錯誤處理函式:注意引數
2、註冊自定義函式:修改錯誤處理機制
當前屬於簡單自定義模式,如果要複雜,可以在某些影響**功能的錯誤發生後,讓使用者跳轉到某個指定介面。
PHP基礎 錯誤處理
錯誤分類 1.語法錯誤 2.執行時錯誤 3.邏輯錯誤 系統錯誤 e error 系統嚴重錯誤 e warning 系統警告 e parse 語法錯誤 e notice 系統提示 使用者自定義錯誤 e user error e user warning e user notice其他 e all 所有...
php基礎之錯誤處理
php中,將各種錯誤進行了不同級別的劃分,大約有十多個級別,這就是技術層面的錯誤分級。每個級別的錯誤都有相應代號,就是系統內部定義的乙個常量。常見的錯誤級別有如下幾種 echo 系統常見錯誤 echo e error e error t t其對於的二進位制值為 getbinstr e error e...
PHP 錯誤處理
在 php 中,預設的錯誤處理很簡單。一條訊息會被傳送到瀏覽器,這條訊息帶有檔名 行號以及一條描述錯誤的訊息。在建立指令碼和 web 應用程式時,錯誤處理是乙個重要的部分。如果您的 缺少錯誤檢測編碼,那麼程式看上去很不專業,也為安全風險敞開了大門。本教程介紹了 php 中一些最為重要的錯誤檢測方法。...