異常的基本使用
當異常被丟擲時,其後的**不會繼續執行,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...