語言

Throwable 類別

定義

Throwable類別是 Java 語言中所有錯誤與異常的超類別。

[Android.Runtime.Register("java/lang/Throwable", DoNotGenerateAcw=true)]
public class Throwable : Java.Interop.JavaException, IDisposable, Java.IO.ISerializable
[<Android.Runtime.Register("java/lang/Throwable", DoNotGenerateAcw=true)>]
type Throwable = class
    inherit JavaException
    interface IJavaObject
    interface IDisposable
    interface ISerializable
    interface IJavaPeerable
繼承
衍生
屬性
實作

備註

Throwable類別是 Java 語言中所有錯誤與異常的超類別。 只有屬於此類別(或其子類別)的物件才會被 Java 虛擬機器拋出,或是由 Java throw 陳述式拋出。 同樣地,只有這個類別或其其中一個子類別能成為子句中的 catch 參數型別。

為了編譯時異常檢查Throwable,且其任何子類別Throwable都不是 or RuntimeException 的子類別Error,皆視為已檢查異常。

兩個子類 java.lang.Errorjava.lang.Exception的實例,以及 ,通常用來表示已發生特殊情況。 通常,這些實例會在例外情境中新建立,以包含相關資訊(如堆疊追蹤資料)。

投擲檔包含其執行緒在建立時執行堆疊的快照。 它也可以包含訊息字串,提供更多關於錯誤的資訊。 隨著時間推移,投擲物可以 Throwable#addSuppressed 抑制其他投擲物的傳播。 最後,投擲物也可以包含 一個原因:另一個投擲物導致該投擲物被建構。 記錄這些因果資訊稱為 連鎖例外 設施,因為原因本身可能有原因,依此類推,導致一連串由另一個例外引起。

拋擲物可能有原因的原因之一是,拋出它的類別是建立在較低層抽象之上,而上層的操作因下層的失敗而失敗。 讓下層投擲物向外傳播會是不良設計,因為這通常與上層所提供的抽象無關。 此外,這樣做會將上層的 API 綁定在其實作細節上,假設下層的例外是已檢查的例外。 拋出「包裹異常」(即包含原因的例外)讓上層能將故障細節傳達給呼叫者,而不會導致上述任何一項缺陷。 它保留了在不改變其 API(特別是其方法拋出的異常集合)的情況下,變更上層實作的彈性。

拋出物可能有原因的第二個原因是拋出它的方法必須符合通用介面,無法直接拋出原因。 例如,假設一個持久集合符合介面, java.util.Collection Collection 且其持久性實作於 java.io之上。 假設該 add 方法的內部元件可以拋出一個 java.io.IOException IOException。 實作可透過適當且未檢查的例外包覆IOException,將 的細節Collection傳達給呼叫者,同時符合介面規範IOException。 (持久集合的規範應說明其能拋出此類例外。)

原因可以透過兩種方式與拋出物關聯:透過將原因視為參數的建構子,或透過方法#initCause(Throwable) 想要讓原因與其相關聯的新可投擲類別,應該提供能接受原因並(或許間接)委派給 Throwable 接受原因的建造者。

由於此 initCause 方法為公開,它允許對任何可拋出物(throwable)關聯一個原因,即使是實作早於例外鏈結機制加入的 Throwable「舊有投擲物」。

依慣例,類別 Throwable 及其子類別有兩個建構子,一個不接受參數,另一個則使用 String 可用於產生詳細訊息的參數。 此外,那些可能與因相關的子類別應該再加兩個建構子,一個取 Throwable a(因由),一個取a String (詳細訊息)和a Throwable (因)。

1.0 版本新增。

Java 文件 java.lang.Throwable

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

建構函式

名稱 Description
Throwable()

以詳細訊息為基礎構建一個新的投擲物 null

Throwable(IntPtr, JniHandleOwnership)

用於建立 JNI 物件受管理表示的建構器;由執行時呼叫。

Throwable(String, Throwable, Boolean, Boolean)

構建一個新的投擲文件,包含指定的詳細訊息、原因、#addSuppressed 抑制啟用或停用,以及可寫的堆疊追蹤啟用或停用。

Throwable(String, Throwable)

構建一個新的投擲物,包含指定的詳細訊息與原因。

Throwable(String)

建立一個包含指定細節訊息的新投擲物。

Throwable(Throwable)

構造一個新的投擲檔,包含指定的原因與 的 (cause==null ? null : cause.toString()) 詳細訊息(通常包含 的 cause類別與詳細訊息)。

欄位

名稱 Description
is_generated

表示此投擲物是否由綁定產生。

屬性

名稱 Description
Cause

回傳此擲物的原因,或 null 是原因不存在或未知。

Class

取得這個丟棄物的執行時類別。

Handle

底層 Android 實例的帳號。

JavaStackTrace

Throwable類別是 Java 語言中所有錯誤與異常的超類別。

(繼承來源 JavaException)
JniIdentityHashCode

取得由互通執行時指派給此 Java 對等端的身份雜湊碼。

JniManagedPeerState

Throwable類別是 Java 語言中所有錯誤與異常的超類別。

(繼承來源 JavaException)
JniPeerMembers

取得用於調用此 Java 節點成員的 JNI 元資料。

LocalizedMessage

建立這個投擲物的在地描述。

Message

回傳此投擲物的詳細訊息字串。

PeerReference

取得這個 Java 節點的 JNI 物件參考。

StackTrace

會得到這個丟棄物堆疊追蹤的字串表示。

ThresholdClass

此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。

ThresholdType

此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。

方法

名稱 Description
AddSuppressed(Throwable)

將指定的例外附加於為提供此例外而被抑制的例外。

Construct(JniObjectReference, JniObjectReferenceOptions)

Throwable類別是 Java 語言中所有錯誤與異常的超類別。

(繼承來源 JavaException)
Dispose()

釋放該 Java 節點所持有的資源。

Dispose(Boolean)

釋放該 Java 節點所持有的資源。

DisposeUnlessReferenced()

Throwable類別是 Java 語言中所有錯誤與異常的超類別。

(繼承來源 JavaException)
Equals(Object)

Throwable類別是 Java 語言中所有錯誤與異常的超類別。

(繼承來源 JavaException)
FillInStackTrace()

填補執行堆疊的追蹤。

Finalize()

在這個 Java 節點被回收之前釋放資源。

FromException(Exception)

將 a Exception 轉換成 Throwable

GetHashCode()

回傳物件的雜湊碼值。

(繼承來源 JavaException)
GetStackTrace()

提供程式化存取由 .#printStackTrace()

GetSuppressed()

回傳一個陣列,包含所有被抑制的例外,通常透過 try-with-resources 陳述式來傳遞此例外。

InitCause(Throwable)

將此拋擲 物的起因 初始化為指定的值。

PrintStackTrace()

列印這個投擲物及其回溯到標準誤差串流。

PrintStackTrace(PrintStream)

列印此投擲檔及其回溯至指定的列印串流。

PrintStackTrace(PrintWriter)

列印此投擲檔及其回溯至指定的列印寫入器。

SetHandle(IntPtr, JniHandleOwnership)

設定 Handle 屬性。

SetJavaStackTrace(JniObjectReference)

Throwable類別是 Java 語言中所有錯誤與異常的超類別。

(繼承來源 JavaException)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

Throwable類別是 Java 語言中所有錯誤與異常的超類別。

(繼承來源 JavaException)
SetStackTrace(StackTraceElement[])

設定將由相關方法返回 #getStackTrace() 並列印 #printStackTrace() 的堆疊追蹤元素。

ToException(Throwable)

回傳對應指定 Java 拋出物的受管理例外。

ToString()

將此值轉換為字串。

UnregisterFromRuntime()

將此 Java 節點從互通執行時中取消註冊。

明確介面實作

名稱 Description
IJavaPeerable.Disposed()

Throwable類別是 Java 語言中所有錯誤與異常的超類別。

(繼承來源 JavaException)
IJavaPeerable.Finalized()

Throwable類別是 Java 語言中所有錯誤與異常的超類別。

(繼承來源 JavaException)
IJavaPeerable.JniObjectReferenceControlBlock

Throwable類別是 Java 語言中所有錯誤與異常的超類別。

(繼承來源 JavaException)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Throwable類別是 Java 語言中所有錯誤與異常的超類別。

(繼承來源 JavaException)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Throwable類別是 Java 語言中所有錯誤與異常的超類別。

(繼承來源 JavaException)
IJavaPeerable.SetPeerReference(JniObjectReference)

Throwable類別是 Java 語言中所有錯誤與異常的超類別。

(繼承來源 JavaException)

擴充方法

名稱 Description
GetJniTypeName(IJavaPeerable)

取得實例 self類型的 JNI 名稱。

JavaAs<TResult>(IJavaPeerable)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

JavaCast<TResult>(IJavaObject)

執行 Android 執行時檢查型別轉換。

JavaCast<TResult>(IJavaObject)

Throwable類別是 Java 語言中所有錯誤與異常的超類別。

TryJavaCast<TResult>(IJavaPeerable, TResult)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

適用於