有考網(wǎng)有考網(wǎng)合作機(jī)構(gòu)>九龍坡區(qū)培訓(xùn)學(xué)校>重慶九龍坡石橋鋪達(dá)內(nèi)IT教育培訓(xùn)
重慶九龍坡石橋鋪達(dá)內(nèi)IT教育培訓(xùn)
全國統(tǒng)一學(xué)習(xí)專線 8:30-21:00
位置:有考網(wǎng) > 計算機(jī)類 > php開發(fā) > > PHP中的錯誤和異常如何處理?  正文

PHP中的錯誤和異常如何處理?

發(fā)布時間:2021-11-22 16:40:59來源:轉(zhuǎn)載

當(dāng)PHP語言遇到異常的情況(比如數(shù)據(jù)庫連接不上或者函數(shù)參數(shù)傳遞錯誤),則會報出一些錯誤,錯誤可以分為多種類型,除了E_ERROR和E_CORE_ERROR錯誤,其它錯誤不會終止程序運(yùn)行。

PHP讓人覺得簡單的原因就在于程序不會頻繁的報錯,給人一種編寫流暢和方便的錯覺。

也正因為這個原因PHP程序的嚴(yán)謹(jǐn)性和準(zhǔn)確性差了不少,比如mysql_fetch_array查詢遇到網(wǎng)絡(luò)錯誤返回FALSE的時候(程序沒有終止運(yùn)行),假如調(diào)用程序認(rèn)為查詢沒有匹配的數(shù)據(jù),則這個程序本質(zhì)是錯誤的。

通過 php.ini的指令 error_reporting或者動態(tài)調(diào)用 error_reporting()函數(shù)我們可以選擇報告什么類型的錯誤,通過 display_errors指令則可以控制錯誤是否在線輸出.而 error_log指令可以控制將錯誤輸出到日志中。

如何正確使用錯誤

不管是系統(tǒng)函數(shù)或者是自定義函數(shù),假如內(nèi)部遇到錯誤,如何告之調(diào)用者呢?一般是通過函數(shù)返回 TRUE或者 FALSE來表明.這種處理方式有幾個弊端:

調(diào)用者只知道發(fā)生了錯誤,但是返回的錯誤信息太少,且缺乏錯誤類型的說明

程序處理邏輯和錯誤處理混雜在一塊,產(chǎn)生的代碼會非常的不清晰

一個小技巧: error_get_last()函數(shù)會返回較近錯誤產(chǎn)生的具體原因

較佳實踐

set_error_handler()函數(shù)來托管所有的錯誤

trigger_error()函數(shù)可以觸發(fā)自定義錯誤,可以用來在函數(shù)中代替 return 語句

將所有的錯誤輸出到日志中,同時定義錯誤類型

對用戶顯示錯誤,比如將錯誤以一種更友好的方式返回給用戶

生產(chǎn)環(huán)境下 display_errors指令要關(guān)閉,開發(fā)環(huán)境則該指令打開

相關(guān)內(nèi)容: PHP學(xué)習(xí) PHP異常 PHP錯誤

同類文章
相關(guān)熱詞