異常的基本使用

2021-08-03 22:42:46 字數 1977 閱讀 6197

使用者可以用自定義的異常處理類來擴充套件 php 內建的異常處理類。

以下的**說明了在內建的異常處理類中,哪些屬性和方法在子類中是可訪問和可繼承的。

譯者注:以下這段**只為說明內建異常處理類的結構,它並不是一段有實際意義的可用**。

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

<?php

class

exception

?>

如果異常沒有**獲,而且又沒用使用

set_exception_handler()作相應的處理的話,

那麼將發生乙個嚴重的錯誤(致命錯誤),並且輸出 「uncaught exception」 (未捕獲異常)的錯誤訊息。

如果使用自定義的類來擴充套件內建異常處理類,並且要重新定義建構函式的話,

建議同時呼叫 parent::__construct() 來檢查所有的變數是否已被賦值。

當物件要輸出字串的時候,可以過載 __tostring() 並自定義輸出的樣式。

列如:

<?php

//create function with an exception

function

checknum

($number)

return

true;

}//trigger exception

checknum(2);

?>

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

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

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

<?php

try }catch( myexception $e )

?>

需要進行異常處理的**應該放入 try **塊內,以便捕獲潛在的異常。

每個 try 或 throw **塊必須至少擁有乙個對應的 catch **塊。

使用多個 catch **塊可以捕獲不同種類的異常。

可以在 try **塊內的 catch **塊中再次丟擲(re-thrown)異常

總之,頁面出現異常我們就要捕獲它們。

宣告類屬性或方法為靜態,就可以不例項化類而直接訪問。靜態屬性不能通過乙個類已例項化的物件來訪問(但靜態方法可以)。

由於靜態方法不需要通過物件即可呼叫,所以偽變數 $this 在靜態方法中不可用。

靜態屬性不可以由物件通過 -> 操作符來訪問。
用靜態方式呼叫乙個非靜態方法會導致乙個 e_strict 級別的錯誤。

就像其它所有的 php 靜態變數一樣,靜態屬性只能被初始化為文字或常量,不能使用表示式。所以可以把靜態屬性初始化為整數或陣列,但不能初始化為另乙個變數或函式返回值,也不能指向乙個物件。

異常處理(又稱為錯誤處理)功能提供了處理程式執行時出現的錯誤或異

常情況的方法。

自 php 5.3.0 起,php >增加了乙個叫做後期靜態繫結的功能,用於在繼承範圍內引用靜態呼叫的類。

後期靜態繫結本想通過引入乙個新的關鍵字表示執行時最初呼叫的類來繞過限制。簡單地說,這個關鍵字能夠讓你在上述例子中呼叫 test() 時引用的類是 b 而不是 a。最終決定不引入新的關鍵字,而是使用已經預留的 static 關鍵字。

**如下:

「`

php異常處理 異常的基本用法

從php5開始,php支援異常處理,異常處理是物件導向乙個重要特性,php 中的異常通過throw丟擲,異常丟擲之後,後面的 將不會再被執行。既然丟擲異常會中斷程式執行,那麼為什麼還需要使用異常處理?異常丟擲被用於在遇到未知錯誤,或者不符合預先設定的條件時,通知客戶程式,以便進行其他相關處理,不至於...

ios的異常使用

有時候寫 的時候會遇到比如在資料做改變時產生的異常,下面舉個例子 try selectedlist removeobjectatindex indexpath.row catch n ception exception 能來到這裡,說明可變陣列刪除元素的 有問題 你可以在這裡進行相應的操作處理 ns...

C 異常的使用

1.為什麼c 引進了異常概念 c語言中處理錯誤的方法有 終止程式,如assert。但是因為某個函式出錯而讓整個程式終止,這樣使用者是難以接受的 返回錯誤碼,缺陷 需要程式設計師自己去查詢對應的錯誤,維護成本高 c 標準庫中setjmp和longjmp 為了解決c語言這些不太友好的錯誤處理機制,c 才...