利用PHP自訂錯誤處理器處理出錯資訊_PHP教程

來源:互聯網
上載者:User
假如您是PHP老手,當然知道當PHP指令碼出錯時發生了什麼事情。此時PHP解析器將在螢幕上給出錯誤資訊,如 Fatal error: Call to undefined function on line 19 --,因此程式在此處終止。這個資訊會嚇到客戶,他可能立即打電話和你進行諮詢。

幸運的是,這裡有解決辦法。PHP擁有內建工具,可以讓開發人員捕捉指令碼錯誤然後將它們轉到自訂的錯誤處理器。此時則可以對處理器進行編程顯示更多關於錯誤的具體資訊。還可以將錯誤寫入檔案或資料庫以採取補救措施。有時候還可以對處理器編寫程式忽略錯誤訊息。

本文中,我將闡述如何使用PHP的錯誤處理API構建使用者自訂的錯誤處理器,並且說明如何以簡單而友好的方式顯示和治理指令碼的錯誤資訊。

錯誤類型和報告層級

我們從最基本的開始。PHP有三種最基本的錯誤類型,從低級到進階分別為:注重、警告和錯誤(或致命錯誤)。通常情況下,注重和警告不會終止程式;但是致命錯誤則是危險故障(例如,調用一個沒有定義的函數或參考一個不存在的對象),將導致程式中斷。這些錯誤有可能在啟動、解析、編譯或運行時發生。

要害字如E_NOTICE, E_ERROR等用於表明錯誤的不同類型和等級。在PHP手冊上可以獲得它們的具體資訊列表。

指令碼階段錯誤顯示由error_reporting()函數進行控制。這一函數針對不同的錯誤等級設定不同的參數。表A給出了使用此函數報警示告和致命錯誤的指令碼程式。

表A

// display warnings and errors
error_reporting(E_WARNING | E_ERROR);
// this will generate a notice, which will never be displayed
echo $undefinedVar;
// this will generate a fatal error, which will be displayed
callUndefFunc();
?>

將表B中的代碼與上面的進行比較發現,Listing B中隱藏錯誤資訊甚至隱藏致命資訊,使得錯誤資訊不會被顯示出來。

表B

// turn off error display
// no errors will be displayed
error_reporting(0);
// this will generate a notice
echo $undefinedVar;
// this will generate a fatal error
callUndefFunc();
?>

表C中的代碼將所有錯誤資訊甚至簡單的注重事項都顯示出來:

表C

// all errors will be displayed
error_reporting(E_ALL);
// this will generate a notice
echo $undefinedVar;
// this will generate a fatal error
callUndefFunc();
?>

如以上3個例子所示,error_reporting()函數在控制錯誤發生時,在螢幕上顯示內容非常重要。這裡的要害字是displayed,其表達的意思是錯誤不被顯示而不是錯誤沒有發生。因此,發生致命錯誤時(例如不正確的函數調用),程式將被終止;但是,此時沒有任何訊息顯示給使用者。

http://www.bkjia.com/PHPjc/632440.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/632440.htmlTechArticle假如您是PHP老手,當然知道當PHP指令碼出錯時發生了什麼事情。此時PHP解析器將在螢幕上給出錯誤資訊,如 Fatal error: Call to undefined function o...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.