php自訂錯誤處理器

(*-*)浩
發布: 2023-02-23 22:14:01
原創
2173 人瀏覽過

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

php自訂錯誤處理器

幸運的是,這裡有解決方案。 PHP擁有內建工具,可以讓開發人員捕捉腳本錯誤然後將它們轉到自訂的錯誤處理器。此時則可以對處理器進行程式設計顯示更多關於錯誤的具體資訊。 (推薦學習:PHP程式設計從入門到精通

也可以將錯誤寫入檔案或資料庫以採取補救措施。有時候還可以對處理器編寫程式忽略錯誤訊息。在

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

錯誤類型和報告等級

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

要害字如E_NOTICE, E_ERROR等用來表示錯誤的不同型別和等級。在PHP手冊上可以獲得它們的具體資訊清單。

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

表A

<?php
// 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

<?php
// 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

<?php
// 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,其表達的意思是錯誤不被顯示而不是錯誤沒有發生。因此,發生致命錯誤時(例如不正確的函數呼叫),程式將被終止;但是,此時沒有任何訊息顯示給使用者。

以上是php自訂錯誤處理器的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板