自定義錯誤set_error_handler(5)

php的默認(rèn)錯誤處理是將消息輸出浸剩。但是,有時候需要定義一些其他操作,這時就需要自定義錯誤處理函數(shù)。php提供內(nèi)置函數(shù)set_error_handler可以幫助我們注冊自己的錯誤處理函數(shù)(此函數(shù)可以用你自己定義的方式來處理運(yùn)行中的錯誤比如返回json)
在這個異常處理程序被調(diào)用后蜀涨,腳本會停止執(zhí)行
可知,他能夠捕獲一部分錯誤蝎毡,不能捕獲系統(tǒng)級E_ERROR厚柳、E_PARSE等錯誤,但是這部分可以由register_shutdown_function()捕獲

set_error_handler ( callable $error_handler [, int $error_types = E_ALL | E_STRICT ] ) : mixed

error_types 里指定的錯誤類型都會繞過 PHP 標(biāo)準(zhǔn)錯誤處理程序沐兵, 除非回調(diào)函數(shù)返回了 FALSE别垮。 error_reporting() 設(shè)置將不會起到作用而你的錯誤函數(shù)繼續(xù)會被調(diào)用
它將接管PHP原生錯誤處理函數(shù),即當(dāng)error_types為E_ALL | E_STRICT時所有的錯誤都會交給自定義的函數(shù)處理

第一個參數(shù)的回調(diào)函數(shù)
error_handler ( int $errno , string $errstr [, string $errfile [, int $errline [, array $errcontext ]]] ) : bool

function error_handler($errno , $errstr, $errfile, $errline){
    echo "錯誤級別的編號errno: $errno<br>";
    echo "錯誤信息errstr: $errstr<br>";
    echo "出錯文件errfile: $errfile<br>";
    echo "出錯行號errline: $errline<br><br>";
}

不支持的錯誤級別: 導(dǎo)致腳本終止的錯誤都不支持

常量 說明
0 關(guān)閉錯誤輸出扎谎,即什么錯誤也不輸出
1 E_ERROR 致命的運(yùn)行時錯誤碳想。這類錯誤一般是不可恢復(fù)的情況,例如內(nèi)存分配導(dǎo)致的問題毁靶。后果是:導(dǎo)致腳本終止不再繼續(xù)運(yùn)行胧奔。
2 E_WARNING 運(yùn)行時警告 (非致命錯誤)。僅給出提示信息老充,但是腳本不會終止運(yùn)行葡盗。
4 E_PARSE 編譯時語法解析錯誤。解析錯誤僅僅由分析器產(chǎn)生啡浊。導(dǎo)致腳本終止不再繼續(xù)運(yùn)行
8 E_NOTICE 運(yùn)行時通知觅够。表示腳本遇到可能會表現(xiàn)為錯誤的情況,但是在可以正常運(yùn)行的腳本里面也可能會有類似的通知巷嚣。
16 E_CORE_ERROR 在PHP初始化啟動過程中發(fā)生的致命錯誤喘先。該錯誤類似 E_ERROR,但是是由PHP引擎核心產(chǎn)生的廷粒。導(dǎo)致腳本終止不再繼續(xù)運(yùn)行
32 E_CORE_WARNING PHP初始化啟動過程中發(fā)生的警告 (非致命錯誤) 窘拯。類似 E_WARNING,但是是由PHP引擎核心產(chǎn)生的坝茎。
64 E_COMPILE_ERROR 致命編譯時錯誤涤姊。類似E_ERROR, 但是是由Zend腳本引擎產(chǎn)生的。導(dǎo)致腳本終止不再繼續(xù)運(yùn)行
128 E_COMPILE_WARNING 編譯時警告 (非致命錯誤)嗤放。類似 E_WARNING思喊,但是是由Zend腳本引擎產(chǎn)生的。
256 E_USER_ERROR 用戶產(chǎn)生的錯誤信息次酌。類似 E_ERROR, 但是是由用戶自己在代碼中使用PHP函數(shù) trigger_error()來產(chǎn)生的恨课。導(dǎo)致腳本終止不再繼續(xù)運(yùn)行
512 E_USER_WARNING 用戶產(chǎn)生的警告信息。類似 E_WARNING, 但是是由用戶自己在代碼中使用PHP函數(shù) trigger_error()來產(chǎn)生的岳服。
1024 E_USER_NOTICE 用戶產(chǎn)生的通知信息剂公。類似 E_NOTICE, 但是是由用戶自己在代碼中使用PHP函數(shù) trigger_error()來產(chǎn)生的。
2048 E_STRICT 啟用 PHP 對代碼的修改建議吊宋,以確保代碼具有最佳的互操作性和向前兼容性纲辽。
4096 E_RECOVERABLE_ERROR ,將成為一個 E_ERROR 從而腳本會終止運(yùn)行璃搜。
8192 E_DEPRECATED 運(yùn)行時通知文兑。啟用后將會對在未來版本中可能無法正常工作的代碼給出警告。
16384 E_USER_DEPRECATED 用戶產(chǎn)少的警告信息腺劣。 類似 E_DEPRECATED, 但是是由用戶自己在代碼中使用PHP函數(shù) trigger_error()來產(chǎn)生的绿贞。
30719 E_ALL E_STRICT除外的所有錯誤和警告信息。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末橘原,一起剝皮案震驚了整個濱河市籍铁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌趾断,老刑警劉巖拒名,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異芋酌,居然都是意外死亡增显,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門脐帝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來同云,“玉大人糖权,你說我怎么就攤上這事≌ㄕ荆” “怎么了星澳?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長旱易。 經(jīng)常有香客問我禁偎,道長,這世上最難降的妖魔是什么阀坏? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任如暖,我火速辦了婚禮,結(jié)果婚禮上忌堂,老公的妹妹穿的比我還像新娘盒至。我一直安慰自己,他們只是感情好浸船,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布妄迁。 她就那樣靜靜地躺著,像睡著了一般李命。 火紅的嫁衣襯著肌膚如雪登淘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天封字,我揣著相機(jī)與錄音黔州,去河邊找鬼。 笑死阔籽,一個胖子當(dāng)著我的面吹牛流妻,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播笆制,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼绅这,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了在辆?” 一聲冷哼從身側(cè)響起证薇,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎匆篓,沒想到半個月后浑度,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鸦概,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年箩张,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡先慷,死狀恐怖饮笛,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情熟掂,我是刑警寧澤缎浇,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布扎拣,位于F島的核電站赴肚,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏二蓝。R本人自食惡果不足惜誉券,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望刊愚。 院中可真熱鬧踊跟,春花似錦、人聲如沸鸥诽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽牡借。三九已至拳昌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間钠龙,已是汗流浹背炬藤。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留碴里,地道東北人沈矿。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像咬腋,于是被迫代替她去往敵國和親羹膳。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容

  • PHP錯誤簡介 PHP提供了錯誤處理和日志記錄的功能. 這些函數(shù)允許你定義自己的錯誤處理規(guī)則根竿,以及修改錯誤...
    四月不見閱讀 2,410評論 0 7
  • 自定義錯誤處理器 我們寫程序陵像,難免會有問題(是經(jīng)常會遇到問題),而PHP遇到錯誤時犀填,就會給出出錯腳本的位置蠢壹、行數(shù)和...
    藍(lán)洛333閱讀 162評論 0 0
  • 由于歷史原因,php一開始被設(shè)計為一門面向過程的語言九巡,所以異常處理沒有使用像Java一樣的 try / catch...
    騎著大象去上班閱讀 373評論 0 0
  • 前言 最近項(xiàng)目中有一個功能需要實(shí)現(xiàn):調(diào)試模式下, 將所有錯誤提前輸出, 再輸出頁面內(nèi)容. 為實(shí)現(xiàn)上述功能, 需使用...
    MinkChannel閱讀 1,868評論 1 15
  • 異常與錯誤異常是指程序運(yùn)行中不符合預(yù)期情況以及與正常流程不同的狀況图贸。錯誤則屬于自身問題,是一種非法語法或者環(huán)境問題...
    riyihu閱讀 313評論 1 1