MethodHandles.CatchException(MethodHandle, Class, MethodHandle) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Erstellt ein Methodenhandle, das ein Zielmethodenhandle anpasst, indem er in einem Ausnahmehandler ausgeführt wird.
[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
Parameter
- target
- MethodHandle
Methodenhandle zum Aufrufen
- exType
- Class
Der Typ der Ausnahme, die der Handler abfangen wird
- handler
- MethodHandle
Methodenhandle zum Aufrufen, wenn eine übereinstimmende Ausnahme ausgelöst wird
Gibt zurück
Methodenhandle, das die angegebene Try/Catch-Logik enthält
- Attribute
Hinweise
Erstellt ein Methodenhandle, das ein Zielmethodenhandle anpasst, indem er in einem Ausnahmehandler ausgeführt wird. Wenn das Ziel normal zurückgegeben wird, gibt der Adapter diesen Wert zurück. Wenn eine Ausnahme, die dem angegebenen Typ entspricht, ausgelöst wird, wird das Fallbackhandle stattdessen für die Ausnahme und die ursprünglichen Argumente aufgerufen.
Das Ziel und der Handler müssen dasselbe entsprechende Argument und dieselben Rückgabetypen aufweisen, mit der Ausnahme, dass der Handler nachfolgende Argumente auslassen kann (ähnlich wie das Prädikat in #guardWithTest guardWithTest
). Außerdem muss der Handler über einen zusätzlichen führenden Parameter oder exType
einen Supertyp verfügen.
Hier ist pseudocode für den resultierenden Adapter. Im Code T
stellt den Rückgabetyp des target
Undhandler
- und entsprechend des resultierenden Adapters dar; A
/a
die Typen und Werte von Argumenten für das resultierende Handle, das von handler
; und , die/B
b
argumente für das resultierende Handle verworfen von .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> Note that the saved arguments (a...
in the pseudocode) cannot be modified by execution of the target, and so are passed unchanged from the caller to the handler, if the handler is invoked.
Das Ziel und der Handler müssen denselben Typ zurückgeben, auch wenn der Handler immer ausgelöst wird. (Dies kann z. B. passieren, weil der Handler eine finally
Klausel simuliert). Um einen solchen auslösenden Handler zu erstellen, erstellen Sie die Handlererstellungslogik mit #throwException throwException
, um ein Methodenhandle des richtigen Rückgabetyps zu erstellen.
Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die vom Android Open Source-Projekt erstellt und freigegeben werden und gemäß den in der Creative Commons 2.5 Attribution License beschriebenen Begriffen verwendet werden.