PHP基礎 錯誤處理

2021-10-09 17:46:53 字數 2255 閱讀 3565

指的是系統(或者使用者)在對某些**進行執行的時候,發現有錯誤,就會通過錯誤處理的形式告知程式設計師

錯誤分類

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 中一些最為重要的錯誤檢測方法。...