PHP異常處理、錯誤報表、日誌

來源:互聯網
上載者:User

錯誤處理:

1.語法錯誤

2.執行階段錯誤

3.邏輯錯誤

錯誤報表:

錯誤:E_ERROT 程式會中斷,發生錯誤

警告:E_WARNING 程式不會中斷,但可能部分功能沒有實現

注意:E_NOTICE 不會影響程式,完全可以屏蔽

開發時輸出所有錯誤報表,運行時禁用所有錯誤報表

將錯誤寫入到日誌中:

1.開啟日誌(php.ini中error_log = On),且關閉錯誤報表,錯誤(如果發生,但沒有允許直接輸出)日誌將會被記錄

2.如不指定日誌路徑,將預設寫入web伺服器日誌中

設定錯誤報表:

error_reporting(E_ALL) //輸出所有報告

修改php.ini設定檔:

 代碼如下 複製代碼

ini_set(“display_errors”,off) //修改為不顯示錯誤報表

ini_get(“upload_max_filesize”) //讀取設定檔中上傳檔案大小限制

異常處理:

意外,是在程式運行中發生的意料之外的事,使用異常改變指令碼正常流程

PHP 5 提供了一種新的物件導向的錯誤處理方法。

異常處理用於在指定的錯誤(異常)情況發生時改變指令碼的正常流程。這種情況稱為異常。

當異常被觸發時,通常會發生:

•當前代碼狀態被儲存
•代碼執行被切換到預定義的異常處理器函數
•根據情況,處理器也許會從儲存的代碼狀態重新開始執行代碼,終止指令碼執行,或從代碼中另外的位置繼續執行指令碼
我們將展示不同的錯誤處理方法:

•異常的基本使用
•建立自訂的異常處理器
•多個異常
•重新拋出異常
•設定頂層異常處理器

文法:

 代碼如下 複製代碼

try{

可能出錯的代碼

throw new Exception(“異常資訊”)

}catch(Exception $e[異常對象]){

後面的正常代碼

}


 代碼如下 複製代碼

function   runtimeErrorHandler($level,$string)
{
//自訂錯誤處理時,手動拋出一個異常執行個體
//為了把錯誤層級代碼也顯示出來,這裡拼接了錯誤碼和錯誤資訊作為新的錯誤資訊來傳遞。
throw   new   Exception($level.'|'.$string);
}
//設定自訂錯誤處理函數
set_error_handler( "runtimeErrorHandler");

try
{
$a=2/0; 
//這裡製造一個以前無法截獲的除0錯誤
}
catch(Exception $e)
{
echo '錯誤資訊:', $e->getMessage();
//顯示錯誤,這裡就可以看到錯誤層級和錯誤資訊了“2|Division by zero”
}

1.如果try中代碼沒有異常,則正常執行。

2.如果try中代碼有異常,則拋出一個異常對象,在catch()中捕捉$e就指向異常對象。再繼續向下執行

3.$e->getMessage()擷取異常資訊

自訂異常類:

作用:寫一些方法解決特定異常(內建的類沒有處理方法)

1.自訂異常類,必須是Exception(內建類)的子類

2.Exception類中只有構造方法和toString()可以重寫

3.定義需要的方法

異常的規則

•需要進行異常處理的代碼應該放入 try 代碼塊內,以便捕獲潛在的異常。
•每個 try 或 throw 代碼塊必須至少擁有一個對應的 catch 代碼塊。
•使用多個 catch 代碼塊可以捕獲不同種類的異常。
•可以在 try 代碼塊內的 catch 代碼塊中再次拋出(re-thrown)異常。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.