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 言語のすべてのエラーと例外のスーパークラスです。 このクラスのインスタンス (またはそのサブクラスの 1 つ) であるオブジェクトのみが、Java仮想マシンによってスローされるか、Java throw ステートメントによってスローされます。 同様に、このクラスまたはそのサブクラスの 1 つだけを catch 句の引数型にすることができます。
例外のコンパイル時のチェックのために、Throwableと、ThrowableまたはRuntimeExceptionのサブクラスでもないErrorのサブクラスは、チェックされた例外と見なされます。
java.lang.Errorとjava.lang.Exceptionの 2 つのサブクラスのインスタンスは、通常、例外的な状況が発生したことを示すために使用されます。 通常、これらのインスタンスは、関連する情報 (スタック トレース データなど) を含むように、例外的な状況のコンテキストで新しく作成されます。
throwable には、作成時のスレッドの実行スタックのスナップショットが含まれます。 また、エラーに関する詳細情報を提供するメッセージ文字列を含めることもできます。 時間の経過と同時に、throwable#addSuppressed によって、他のスロー可能なスロー可能が伝達されないようにすることができます。 最後に、throwable には、このスロー可能なオブジェクトを構築する原因となった別のスロー可能な 原因を含めることもできます。 この因果情報の記録は、原因自体に原因がある可能性があるため、 チェーン例外 機能と呼ばれ、それぞれが別の例外によって引き起こされる例外の "チェーン" につながります。
スロー可能な場合に原因が考えられる理由の 1 つは、スローするクラスが下位レイヤーの抽象化の上に構築され、上位レイヤーの操作が下位レイヤーの障害のために失敗する場合です。 一般的に上層によって提供される抽象化とは無関係であるため、下位レイヤーによってスローされるスロー可能なオブジェクトを外側に伝播させるのは不適切な設計です。 さらに、これを行うと、上位レイヤーの API がその実装の詳細に結び付けられます。これは、下位レイヤーの例外がチェックされた例外であると仮定します。 "ラップされた例外" (つまり、原因を含む例外) をスローすると、上位レイヤーは、これらの欠点のいずれかを発生させることなく、エラーの詳細を呼び出し元に伝達できます。 API (特に、メソッドによってスローされる例外のセット) を変更することなく、上位レイヤーの実装を柔軟に変更できます。
スロー可能な場合に原因が考えられる 2 つ目の理由は、スローするメソッドが原因を直接スローすることを許可しない汎用インターフェイスに準拠している必要があるということです。 たとえば、永続的なコレクションが java.util.Collection Collection インターフェイスに準拠し、その永続化が java.ioの上に実装されるとします。
add メソッドの内部がjava.io.IOException IOExceptionをスローできるとします。 実装では、IOExceptionを適切なチェックされていない例外でラップすることで、Collection インターフェイスに準拠しながら、IOExceptionの詳細を呼び出し元に伝えることができます。 (永続コレクションの仕様は、このような例外をスローできることを示す必要があります)。
原因は、引数として原因を受け取るコンストラクターを介して、または #initCause(Throwable) メソッドを介して、2 つの方法でスロー可能に関連付けることができます。 原因を関連付けできるようにする新しいスロー可能なクラスは、原因を受け取るコンストラクターと、原因を取る Throwable コンストラクターのいずれかに (おそらく間接的に) デリゲートするコンストラクターを提供する必要があります。
initCause メソッドはパブリックであるため、例外チェーン メカニズムをThrowableに追加する前の実装を持つ"レガシ スロー可能" であっても、スロー可能な任意の原因に関連付けられます。
慣例により、クラス Throwable とそのサブクラスには 2 つのコンストラクターがあります。1 つは引数を受け取らなくなり、1 つは詳細メッセージの生成に使用できる String 引数を受け取ります。 さらに、原因が関連付けられている可能性があるサブクラスには、さらに 2 つのコンストラクターが必要です。1 つは Throwable (原因) を受け取り、もう 1 つは String (詳細メッセージ) と Throwable (原因) を受け取ります。
1.0 で追加されました。
このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。
コンストラクター
| 名前 | 説明 |
|---|---|
| Throwable() |
|
| Throwable(IntPtr, JniHandleOwnership) |
JNI オブジェクトのマネージド表現を作成するときに使用されるコンストラクター。ランタイムによって呼び出されます。 |
| Throwable(String, Throwable, Boolean, Boolean) |
指定した詳細メッセージ、原因、#addSuppressed 抑制が有効または無効、書き込み可能なスタック トレースが有効または無効になっている新しいスロー可能なスタック トレースを構築します。 |
| Throwable(String, Throwable) |
指定した詳細メッセージと原因を使用して、新しいスロー可能なメッセージを構築します。 |
| Throwable(String) |
指定した詳細メッセージを使用して、新しいスロー可能なオブジェクトを構築します。 |
| Throwable(Throwable) |
指定した原因と |
フィールド
| 名前 | 説明 |
|---|---|
| is_generated |
このスロー可能なオブジェクトがバインディングによって生成されたかどうかを示します。 |
プロパティ
| 名前 | 説明 |
|---|---|
| Cause |
原因が存在しないか不明な場合は、このスロー可能または |
| Class |
このスロー可能なランタイム クラスを取得します。 |
| Handle |
基になる Android インスタンスへのハンドル。 |
| JavaStackTrace |
|
| JniIdentityHashCode |
相互運用ランタイムによってこのJava ピアに割り当てられた ID ハッシュ コードを取得します。 |
| JniManagedPeerState |
|
| JniPeerMembers |
このJava ピアのメンバーを呼び出すために使用される JNI メタデータを取得します。 |
| LocalizedMessage |
このスロー可能なローカライズされた説明を作成します。 |
| Message |
このスロー可能な詳細メッセージ文字列を返します。 |
| PeerReference |
このJava ピアの JNI オブジェクト参照を取得します。 |
| StackTrace |
このスロー可能なスタック トレースの文字列形式を取得します。 |
| ThresholdClass |
この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。 |
| ThresholdType |
この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。 |
メソッド
| 名前 | 説明 |
|---|---|
| AddSuppressed(Throwable) |
この例外を配信するために抑制された例外に、指定した例外を追加します。 |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
|
| Dispose() |
このJava ピアによって保持されているリソースを解放します。 |
| Dispose(Boolean) |
このJava ピアによって保持されているリソースを解放します。 |
| DisposeUnlessReferenced() |
|
| Equals(Object) |
|
| FillInStackTrace() |
実行スタック トレースを入力します。 |
| Finalize() |
このJava ピアが再利用される前にリソースを解放します。 |
| FromException(Exception) | |
| GetHashCode() |
|
| 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 ピアの登録を解除します。 |
明示的なインターフェイスの実装
| 名前 | 説明 |
|---|---|
| IJavaPeerable.Disposed() |
|
| IJavaPeerable.Finalized() |
|
| IJavaPeerable.JniObjectReferenceControlBlock |
|
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
|
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
|
| IJavaPeerable.SetPeerReference(JniObjectReference) |
|
拡張メソッド
| 名前 | 説明 |
|---|---|
| GetJniTypeName(IJavaPeerable) |
インスタンス |
| JavaAs<TResult>(IJavaPeerable) |
|
| JavaCast<TResult>(IJavaObject) |
Android ランタイムチェック型変換を実行します。 |
| JavaCast<TResult>(IJavaObject) |
|
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
|