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

PHP中的錯(cuò)誤和異常如何處理?

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

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

PHP讓人覺(jué)得簡(jiǎn)單的原因就在于程序不會(huì)頻繁的報(bào)錯(cuò),給人一種編寫流暢和方便的錯(cuò)覺(jué)。

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

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

如何正確使用錯(cuò)誤

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

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

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

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

較佳實(shí)踐

set_error_handler()函數(shù)來(lái)托管所有的錯(cuò)誤

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

將所有的錯(cuò)誤輸出到日志中,同時(shí)定義錯(cuò)誤類型

對(duì)用戶顯示錯(cuò)誤,比如將錯(cuò)誤以一種更友好的方式返回給用戶

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

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

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