国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > PHP > 正文

利用PHP自定義錯(cuò)誤處理器處理出錯(cuò)信息

2024-05-04 21:47:17
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

假如您是PHP老手,當(dāng)然知道當(dāng)PHP腳本出錯(cuò)時(shí)發(fā)生了什么事情。此時(shí)PHP解析器將在屏幕上給出錯(cuò)誤信息,如 Fatal error: Call to undefined function on line 19 --,因此程序在此處終止。這個(gè)信息會(huì)嚇到客戶(hù),他可能立即打電話(huà)和你進(jìn)行咨詢(xún)。

幸運(yùn)的是,這里有解決辦法。PHP擁有內(nèi)置工具,可以讓開(kāi)發(fā)人員捕捉腳本錯(cuò)誤然后將它們轉(zhuǎn)到自定義的錯(cuò)誤處理器。此時(shí)則可以對(duì)處理器進(jìn)行編程顯示更多關(guān)于錯(cuò)誤的具體信息。還可以將錯(cuò)誤寫(xiě)入文件或數(shù)據(jù)庫(kù)以采取補(bǔ)救措施。有時(shí)候還可以對(duì)處理器編寫(xiě)程序忽略錯(cuò)誤消息。

本文中,我將闡述如何使用PHP的錯(cuò)誤處理API構(gòu)建用戶(hù)自定義的錯(cuò)誤處理器,并且說(shuō)明如何以簡(jiǎn)單而友好的方式顯示和治理腳本的錯(cuò)誤信息。

錯(cuò)誤類(lèi)型和報(bào)告級(jí)別

我們從最基本的開(kāi)始。PHP有三種最基本的錯(cuò)誤類(lèi)型,從低級(jí)到高級(jí)分別為:注重、警告和錯(cuò)誤(或致命錯(cuò)誤)。通常情況下,注重和警告不會(huì)終止程序;但是致命錯(cuò)誤則是危險(xiǎn)故障(例如,調(diào)用一個(gè)沒(méi)有定義的函數(shù)或參考一個(gè)不存在的對(duì)象),將導(dǎo)致程序中斷。這些錯(cuò)誤有可能在啟動(dòng)、解析、編譯或運(yùn)行時(shí)發(fā)生。

要害字如E_NOTICE, E_ERROR等用于表明錯(cuò)誤的不同類(lèi)型和等級(jí)。在PHP手冊(cè)上可以獲得它們的具體信息列表。

腳本階段錯(cuò)誤顯示由error_reporting()函數(shù)進(jìn)行控制。這一函數(shù)針對(duì)不同的錯(cuò)誤等級(jí)設(shè)置不同的參數(shù)。表A給出了使用此函數(shù)報(bào)告警告和致命錯(cuò)誤的腳本程序。

表A

  1. <?php 
  2. // display warnings and errors 
  3. error_reporting(E_WARNING | E_ERROR); 
  4. // this will generate a notice, which will never be displayed 
  5. echo $undefinedVar
  6. // this will generate a fatal error, which will be displayed 
  7. callUndefFunc(); 
  8. ?> 

將表B中的代碼與上面的進(jìn)行比較發(fā)現(xiàn),Listing B中隱藏錯(cuò)誤信息甚至隱藏致命信息,使得錯(cuò)誤信息不會(huì)被顯示出來(lái)。

表B

  1. <?php 
  2. // turn off error display 
  3. // no errors will be displayed 
  4. error_reporting(0); 
  5. // this will generate a notice 
  6. echo $undefinedVar
  7. // this will generate a fatal error 
  8. callUndefFunc(); 
  9. ?> 

表C中的代碼將所有錯(cuò)誤信息甚至簡(jiǎn)單的注重事項(xiàng)都顯示出來(lái):

表C

  1. <?php 
  2. // all errors will be displayed 
  3. error_reporting(E_ALL); 
  4. // this will generate a notice 
  5. echo $undefinedVar
  6. // this will generate a fatal error 
  7. callUndefFunc(); 
  8. ?> 

如以上3個(gè)例子所示,error_reporting()函數(shù)在控制錯(cuò)誤發(fā)生時(shí),在屏幕上顯示內(nèi)容非常重要。這里的要害字是displayed,其表達(dá)的意思是錯(cuò)誤不被顯示而不是錯(cuò)誤沒(méi)有發(fā)生。因此,發(fā)生致命錯(cuò)誤時(shí)(例如不正確的函數(shù)調(diào)用),程序?qū)⒈唤K止;但是,此時(shí)沒(méi)有任何消息顯示給用戶(hù)。


發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 河源市| 马关县| 鹰潭市| 平遥县| 泉州市| 宝坻区| 乐至县| 肥西县| 武穴市| 兰考县| 香格里拉县| 云浮市| 普洱| 无极县| 腾冲县| 天全县| 云梦县| 沙湾县| 忻城县| 平远县| 汾阳市| 望谟县| 同江市| 城固县| 新闻| 柳州市| 阿拉善盟| 观塘区| 岚皋县| 柯坪县| 鲁甸县| 泸水县| 广州市| 肥城市| 启东市| 兴仁县| 兴仁县| 汝城县| 隆德县| 宣化县| 桂平市|