MethodHandles.CatchException(MethodHandle, Class, MethodHandle) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
例外ハンドラー内で実行することにより、ターゲット メソッド ハンドルを調整するメソッド ハンドルを作成します。
[Android.Runtime.Register("catchException", "(Ljava/lang/invoke/MethodHandle;Ljava/lang/Class;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=26)]
public static Java.Lang.Invoke.MethodHandle? CatchException(Java.Lang.Invoke.MethodHandle? target, Java.Lang.Class? exType, Java.Lang.Invoke.MethodHandle? handler);
[<Android.Runtime.Register("catchException", "(Ljava/lang/invoke/MethodHandle;Ljava/lang/Class;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=26)>]
static member CatchException : Java.Lang.Invoke.MethodHandle * Java.Lang.Class * Java.Lang.Invoke.MethodHandle -> Java.Lang.Invoke.MethodHandle
パラメーター
- target
- MethodHandle
呼び出すメソッド ハンドル
- exType
- Class
ハンドラーがキャッチする例外の種類
- handler
- MethodHandle
一致する例外がスローされた場合に呼び出すメソッド ハンドル
戻り値
指定された try/catch ロジックを組み込むメソッド ハンドル
- 属性
注釈
例外ハンドラー内で実行することにより、ターゲット メソッド ハンドルを調整するメソッド ハンドルを作成します。 ターゲットが正常に返された場合、アダプターはその値を返します。 指定した型に一致する例外がスローされた場合は、代わりに例外と元の引数でフォールバック ハンドルが呼び出されます。
ターゲットとハンドラーには、対応する引数と戻り値の型が同じである必要があります。ただし、ハンドラーでは末尾の引数 (述語と #guardWithTest guardWithTest
同様) を省略できます。 また、ハンドラーには、追加の exType
先頭パラメーターまたはスーパータイプが必要です。
結果のアダプターの擬似コードを次に示します。 このコードでは、T
結果のアダプターの戻り値のtarget
型とhandler
、それに対応して結果のアダプターの戻り値を表しますA
/a
。、結果として使用されるhandler
ハンドルに対する引数の型と値を表します。および、結果のハンドルに対する引数の型と/B
b
値は破棄されます。handler
<blockquote>
{@code
T target(A..., B...);
T handler(ExType, A...);
T adapter(A... a, B... b) {
try {
return target(a..., b...);
} catch (ExType ex) {
return handler(ex, a...);
}
}
}
</blockquote> :(擬似コード内の) 保存された引数a...
はターゲットの実行によって変更できないため、ハンドラーが呼び出された場合、呼び出し元からハンドラーに変更されずに渡されることに注意してください。
ハンドラーが常にスローする場合でも、ターゲットとハンドラーは同じ型を返す必要があります。 (たとえば、ハンドラーが句をシミュレートしているために発生する finally
可能性があります)。 このようなスローハンドラーを作成するには、正しい戻り値の型のメソッド ハンドルを作成するために、ハンドラー作成ロジック #throwException throwException
を作成します。
このページの一部は、Android オープンソース プロジェクトによって作成および共有され、クリエイティブ コモンズ 2.5 属性ライセンスに記載されている条件に従って使用される作業に基づく変更です。