php 不丟擲異常 PHP 異常處理

2021-10-22 21:38:26 字數 1775 閱讀 4274

異常的基本使用

當異常被丟擲時,其後的**不會繼續執行,php 會嘗試查詢匹配的 "catch" **塊。

如果異常沒有**獲,而且又沒用使用 set_exception_handler() 作相應的處理的話,那麼將發生乙個嚴重的錯誤(致命錯誤),並且輸出 "uncaught exception" (未捕獲異常)的錯誤訊息。

讓我們嘗試丟擲乙個異常,同時不去捕獲它:

//create function with an exception

function checknum($number)

if($number>1)

throw new exception("value must be 1 or below");

return true;

//trigger exception

checknum(2);

上面的**會獲得類似這樣的乙個錯誤:

fatal error: uncaught exception 'exception'

with message 'value must be 1 or below' in c:\webfolder\test.php:6

stack trace: #0 c:\webfolder\test.php(12):

checknum(28) #1 thrown in c:\webfolder\test.php on line 6

try, throw 和 catch

要避免上面例子出現的錯誤,我們需要建立適當的**來處理異常。

正確的處理程式應當包括:

try - 使用異常的函式應該位於 "try" **塊內。如果沒有觸發異常,則**將照常繼續執行。但是如果異常被觸發,會丟擲乙個異常。

throw - 這裡規定如何觸發異常。每乙個 "throw" 必須對應至少乙個 "catch"

catch - "catch" **塊會捕獲異常,並建立乙個包含異常資訊的物件

讓我們觸發乙個異常:

//建立可丟擲乙個異常的函式

function checknum($number)

if($number>1)

throw new exception("value must be 1 or below");

return true;

//在 "try" **塊中觸發異常

trychecknum(2);

//if the exception is thrown, this text will not be shown

echo 'if you see this, the number is 1 or below';

//捕獲異常

catch(exception $e)

echo 'message: ' .$e->getmessage();

上面**將獲得類似這樣乙個錯誤:

message: value must be 1 or below

例子解釋:

上面的**丟擲了乙個異常,並捕獲了它:

建立 checknum() 函式。它檢測數字是否大於 1。如果是,則丟擲乙個異常。

在 "try" **塊中呼叫 checknum() 函式。

checknum() 函式中的異常被丟擲

"catch" **塊接收到該異常,並建立乙個包含異常資訊的物件 ($e)。

通過從這個 exception 物件呼叫 $e->getmessage(),輸出來自該異常的錯誤訊息

不過,為了遵循「每個 throw 必須對應乙個 catch」的原則,可以設定乙個頂層的異常處理器來處理漏掉的錯誤。

php 不丟擲異常 PHP如何丟擲異常處理錯誤

首先要知道什麼是php異常?異常 exception 用於在指定的錯誤發生時改變指令碼的正常流程。php 5 提供了一種新的物件導向的錯誤處理方法。異常處理用於在指定的錯誤 異常 情況發生時改變指令碼的正常流程。這種情況稱為異常。當異常被觸發時,通常會發生 當前 狀態被儲存 執行被切換到預定義的異常...

php 不丟擲異常 php錯誤與異常處理

php與其他計算機程式語言在遇到錯誤就丟擲異常不太一樣,php在處理物件時它也有異常機制,但是php會盡可能的愉快的去執行而無視發生的事情,除非遇到乙個極端嚴重錯誤才會丟擲異常。本文主要給大家分享php相關的錯誤異常處理機制。錯誤等級 php 有幾個錯誤嚴重性等級。三個最常見的的資訊型別是錯誤 er...

php異常處理 多個異常

可以為一段指令碼使用多個異常,來檢測多種情況。可以使用多個 if.else 塊,或乙個 switch 塊,或者巢狀多個異常。這些異常能夠使用不同的 exception 類,並返回不同的錯誤訊息 class customexception extends exception email someone...