Throwable 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
該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 版本新增。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
建構函式
| 名稱 | Description |
|---|---|
| Throwable() |
以詳細訊息為基礎構建一個新的投擲物 |
| Throwable(IntPtr, JniHandleOwnership) |
用於建立 JNI 物件受管理表示的建構器;由執行時呼叫。 |
| Throwable(String, Throwable, Boolean, Boolean) |
構建一個新的投擲文件,包含指定的詳細訊息、原因、#addSuppressed 抑制啟用或停用,以及可寫的堆疊追蹤啟用或停用。 |
| Throwable(String, Throwable) |
構建一個新的投擲物,包含指定的詳細訊息與原因。 |
| Throwable(String) |
建立一個包含指定細節訊息的新投擲物。 |
| Throwable(Throwable) |
構造一個新的投擲檔,包含指定的原因與 的 |
欄位
| 名稱 | Description |
|---|---|
| is_generated |
表示此投擲物是否由綁定產生。 |
屬性
| 名稱 | Description |
|---|---|
| Cause |
回傳此擲物的原因,或 |
| Class |
取得這個丟棄物的執行時類別。 |
| Handle |
底層 Android 實例的帳號。 |
| JavaStackTrace |
該 |
| JniIdentityHashCode |
取得由互通執行時指派給此 Java 對等端的身份雜湊碼。 |
| JniManagedPeerState |
該 |
| 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) |
該 |
| Dispose() |
釋放該 Java 節點所持有的資源。 |
| Dispose(Boolean) |
釋放該 Java 節點所持有的資源。 |
| DisposeUnlessReferenced() |
該 |
| Equals(Object) |
該 |
| FillInStackTrace() |
填補執行堆疊的追蹤。 |
| Finalize() |
在這個 Java 節點被回收之前釋放資源。 |
| FromException(Exception) | |
| GetHashCode() |
回傳物件的雜湊碼值。 (繼承來源 JavaException) |
| GetStackTrace() |
提供程式化存取由 . |
| GetSuppressed() |
回傳一個陣列,包含所有被抑制的例外,通常透過 |
| InitCause(Throwable) |
將此拋擲 物的起因 初始化為指定的值。 |
| PrintStackTrace() |
列印這個投擲物及其回溯到標準誤差串流。 |
| PrintStackTrace(PrintStream) |
列印此投擲檔及其回溯至指定的列印串流。 |
| PrintStackTrace(PrintWriter) |
列印此投擲檔及其回溯至指定的列印寫入器。 |
| SetHandle(IntPtr, JniHandleOwnership) |
設定 Handle 屬性。 |
| SetJavaStackTrace(JniObjectReference) |
該 |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
該 |
| SetStackTrace(StackTraceElement[]) |
設定將由相關方法返回 |
| ToException(Throwable) |
回傳對應指定 Java 拋出物的受管理例外。 |
| ToString() |
將此值轉換為字串。 |
| UnregisterFromRuntime() |
將此 Java 節點從互通執行時中取消註冊。 |
明確介面實作
| 名稱 | Description |
|---|---|
| IJavaPeerable.Disposed() |
該 |
| IJavaPeerable.Finalized() |
該 |
| IJavaPeerable.JniObjectReferenceControlBlock |
該 |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
該 |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
該 |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
該 |
擴充方法
| 名稱 | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
取得實例 |
| JavaAs<TResult>(IJavaPeerable) |
試著強制 |
| JavaCast<TResult>(IJavaObject) |
執行 Android 執行時檢查型別轉換。 |
| JavaCast<TResult>(IJavaObject) |
該 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
試著強制 |