php常見錯誤分類及解決方法

2021-09-14 05:40:38 字數 2054 閱讀 5341

錯誤的分類

語法錯誤:程式沒法執行,直接提示語法錯誤

執行時錯誤:只有程式執行到某行,或在某些特定的情形下執行時才會發生的錯誤(主要面對)

邏輯錯誤:程式從頭到尾都沒有發生(並提示)錯誤,但程式執行結果錯誤

錯誤分級

每個級別的錯誤,對應乙個內部的名稱—系統常量

系統錯誤:e_error(嚴重錯誤,一發生,系統立即停止)、e_warning、e_notice

e_error=1(系統錯誤)

e_warning=2(系統警告)

e_parse=4(語法錯誤)

e_notice=8(系統提示)

(系統內部的整數常量,這些常量是我們對該類錯誤進行控制的識別符號)

使用者自定義錯誤

只有3個:e_user_error、e_user_ warning、e_user_ notice

可以在程式中,自己建立錯誤---是為了針對某些資料的不合理情形,而建立的錯誤(如年齡超過188等)

其他e_all:代表所有錯誤

錯誤的觸發

正常觸發:程式執行過程中體現出來

人工觸發:程式設計師通過程式**而產生的乙個錯誤

trigger_error(「錯誤描述資訊」,使用者錯誤代號);

顯示錯誤報告

display_errors:控制是否顯示

error_reporting:控制顯示哪些級別的錯誤

控制的方式有兩種:

php.ini檔案中:對系統中所有執行的php程式都有效

display_errors=on/off

error_reporting= e_notice (只顯示notice這一級別錯誤提示)

error_reporting= e_notice | e_warning(顯示notice和warning一級別錯誤提示)

error_reporting= e_notice & e_warning(什麼都不顯示)

error_reporting= e_all(顯示所有,但不包含strict錯誤)

error_reporting= e_all | e_strict(顯示所有錯誤,開發中最常用)

如果在顯示所有錯誤的基礎上,關閉個別錯誤,與狀態設定(關閉)的原理一致,在顯示所有錯誤的基礎上將個別錯誤取反並做按位與運算

在網頁**中,只影響當前的網頁**(優先級別高)

ini_set(「控制項」,值);(幾乎可以設定所有php.ini中的設定項ini_get(「設定項名稱」)使用者獲取某項的值)

示例: ini_set(「display_errors」,1);//1表示顯示,0表示不顯示

ini_set(「error_reporting」, e_notice);(只顯示notice這一級別錯誤提示)

記錄錯誤日誌(2種途徑)

log_errors:控制是否記錄錯誤日誌

error_log:控制錯誤日誌記錄到**,給定乙個檔名就可以

乙個特殊值:syslog,會記錄到作業系統日誌中,而不會記錄到檔案

php.ini中:

log_errors=on

error_log=「錯誤日誌檔名」(沒有給定路徑,系統會在每個資料夾下建立檔案並記錄進去)

當前檔案中使用ini_set(「log_errors」,on);

自定義錯誤處理器

就是自己控制錯誤的顯示內容和記錄內容

分兩步完成:

1.設定自定義錯誤處理函式

set_error_handler(「函式名」);

2.定義該函式(並通常需要設定4個引數)

function error_handler($errno,$errmsg,$errfile,$errline){

// 處理該4個引數

注意:該函式無需手工呼叫,出錯時會自動呼叫;一旦用自定義錯誤,則系統不在出錯誤處理;如果系統發生嚴重錯誤,則不會呼叫自定函式,由系統處理(顯示並終止)

Delphi常見錯誤及解決方法

前言 本節整理了delphi中一些常見錯誤 並給出了相應的解決方法。問題及解決 問題分析 dbgrid是可以修改的,但需要至少兩個條件 第一,dbgrid本身屬性設定允許使用者修改,第二它所繫結的資料集元件是可以修改的。你所說的出 錯 dataset not in edit or insert mo...

QT常見錯誤及解決方法

1 error header was not declared in this scope 在使用此變數之前沒有對其進行定義 2 error rtlwerpreportexception failed with status code 1073741823 這個錯誤多半是因為乙個變數定義好後還沒有被...

Oracle 連線常見錯誤及解決方法

出現資料庫的連線問題可在命令列下使用 tnsping 服務名 來檢查出錯原因。常見錯誤有 ora 12535 tns 操作超時 首先關閉防火牆,這是最常見的連線出錯原因。如果仍然不行,檢查 tnsnames.ora 檔案配置,主要是主機名稱是否正確 tnsnames.ora network conf...