真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

更好的PHP錯(cuò)誤處理-創(chuàng)新互聯(lián)

=====錯(cuò)誤類型====

專業(yè)從事成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站,高端網(wǎng)站制作設(shè)計(jì),重慶小程序開發(fā),網(wǎng)站推廣的成都做網(wǎng)站的公司。優(yōu)秀技術(shù)團(tuán)隊(duì)竭力真誠服務(wù),采用H5響應(yīng)式網(wǎng)站+CSS3前端渲染技術(shù),自適應(yīng)網(wǎng)站建設(shè),讓網(wǎng)站在手機(jī)、平板、PC、微信下都能呈現(xiàn)。建站過程建立專項(xiàng)小組,與您實(shí)時(shí)在線互動(dòng),隨時(shí)提供解決方案,暢聊想法和感受。

PHP 主要有兩種錯(cuò)誤:觸發(fā)錯(cuò)誤和異常。

其中觸發(fā)錯(cuò)誤大概可以分為:編譯錯(cuò)誤、引擎錯(cuò)誤和運(yùn)行時(shí)錯(cuò)誤,其中前兩個(gè)是無法捕獲的;

異常都是可以捕獲的,當(dāng)沒有嘗試捕獲時(shí)則會(huì)中斷代碼。

觸發(fā)錯(cuò)誤可以通過 error_get_last() 來進(jìn)行獲得,異??梢允褂脴?biāo)準(zhǔn)的 try...catch 語句來捕獲。

=====處理方式=====

【錯(cuò)誤報(bào)告】

error_reporting() 函數(shù)是 PHP 提供的一個(gè)控制錯(cuò)誤等級(jí)的函數(shù),如果設(shè)置了對(duì)應(yīng)的錯(cuò)誤等級(jí),則只會(huì)在對(duì)應(yīng)錯(cuò)誤等級(jí)觸發(fā)時(shí)才會(huì)在頁面(或輸出,對(duì)于命令行來說)輸出響應(yīng)的錯(cuò)誤信息。

error_reporting(int level) 支持等級(jí) level 參數(shù)使用二進(jìn)制的數(shù)字來配置錯(cuò)誤等級(jí),錯(cuò)誤等級(jí)一般用常量來代替對(duì)應(yīng)的二進(jìn)制標(biāo)識(shí)。例如:E_ALL、E_NOTICE、 E_USER_NOTICE 等等;如果不傳遞參數(shù),則會(huì)返回當(dāng)前的錯(cuò)誤等級(jí)(一般用來保存當(dāng)前的錯(cuò)誤等級(jí)以供后續(xù)恢復(fù))。

其中 E_PARSE、E_COMPILE_* 和 E_CORE_* 是非運(yùn)行時(shí)錯(cuò)誤,無法被捕獲的

【php.ini】

配置文件是 PHP 初始化的默認(rèn)配置,通過修改某些參數(shù)可以控制對(duì)應(yīng)的初始化參數(shù)。如果要控制錯(cuò)誤,可以通過以下幾個(gè)方式來配置:

display_errors - 是否顯示錯(cuò)誤,一般在生產(chǎn)環(huán)境建議關(guān)閉該參數(shù)并和下列的參數(shù)一起試用 log_errors - 記錄錯(cuò)誤開關(guān),如果打開會(huì)記錄到對(duì)應(yīng)位置 error_log - 記錄錯(cuò)誤日志的位置,不指定為系統(tǒng)默認(rèn) error_reporting - 同上面的函數(shù)

【錯(cuò)誤抑制】

PHP 提供了一種特殊的操作,通過在語句前面加上抑制錯(cuò)誤操作符@來抑制該語句出現(xiàn)錯(cuò)誤。這種情況通常用于你不知道會(huì)發(fā)生什么情況下使用,比如打開了不確定的文件或者網(wǎng)絡(luò) URL,但一般不推薦使用

抑制錯(cuò)誤本身內(nèi)部做了一系列的處理才達(dá)到該效果,并且對(duì)于錯(cuò)誤本身完全是未知的,一般情況下,不建議這么使用

【捕獲異常】

幾乎在所有語言中,都會(huì)有對(duì)于異常的處理。如果程序拋出一個(gè)異常,那么可以通過 try…catch 語句來捕獲該異常,如果明確知道錯(cuò)誤的類型,也可以只捕獲該類型的錯(cuò)誤。try…catch 是一種最標(biāo)準(zhǔn)的錯(cuò)誤處理方式。

try {

 // 代碼部分

} catch (Exception $e) {

 // 根據(jù)異常對(duì)象對(duì) $e 進(jìn)行處理

}

【設(shè)置錯(cuò)誤處理器】

PHP 提供了 set_error_handler() 函數(shù)來讓開發(fā)者傳入一個(gè)函數(shù)名(或匿名函數(shù),對(duì)于 5.2 以上的 PHP)就可以讓所有的錯(cuò)誤進(jìn)入該函數(shù),然后開發(fā)者可以在函數(shù)內(nèi)進(jìn)行控制,舉例說明

set_error_handler(function($code, $msg){

 log_error("$msg occur with code $code");

});

對(duì)應(yīng)地,PHP 也提供了 restore_error_handler() 來恢復(fù)為標(biāo)準(zhǔn)的 PHP 錯(cuò)誤控制。

【設(shè)置異常處理器】

如果每個(gè)異常都去捕獲,顯然是很復(fù)雜的事情,需要編寫很多代碼,而且維護(hù)起來會(huì)比較復(fù)雜,對(duì)于一個(gè)快速編程的語言來說,PHP 自然不會(huì)允許發(fā)生這種事情。使用 set_exception_handler() 就可以像上面錯(cuò)誤處理控制器一樣接收所有未捕獲的異常,然后做一些該做的事情,甚至還可以再把錯(cuò)誤拋出來。例如:

set_exception_handler(function($exception){

 log_error("Exception occur: $exception");

});

【崩潰捕獲】

該類處理并非 PHP 標(biāo)準(zhǔn)的處理方式,但對(duì)于某種使程序崩潰的無法捕獲的錯(cuò)誤確實(shí)很有用,它是指注冊(cè)一個(gè) shutdown 函數(shù),在函數(shù)內(nèi)通過調(diào)用 error_get_last() 來獲取最后的錯(cuò)誤,并且根據(jù)錯(cuò)誤等級(jí)來做相應(yīng)的處理。

register_shutdown_function(function(){

 $error = error_get_last();

 if ($error && $error['code']()() & error_reporting()) {

  // 崩潰錯(cuò)誤,記錄日志

 }

});

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


本文題目:更好的PHP錯(cuò)誤處理-創(chuàng)新互聯(lián)
網(wǎng)站鏈接:http://weahome.cn/article/djjgod.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部