MethodHandles.CatchException(MethodHandle, Class, MethodHandle) Método

Definição

Faz um identificador de método que adapta um identificador de método de destino executando-o dentro de um manipulador de exceção.

[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

Parâmetros

target
MethodHandle

identificador de método para chamar

exType
Class

o tipo de exceção que o manipulador capturará

handler
MethodHandle

identificador de método para chamar se uma exceção correspondente for gerada

Retornos

identificador de método que incorpora a lógica try/catch especificada

Atributos

Comentários

Faz um identificador de método que adapta um identificador de método de destino executando-o dentro de um manipulador de exceção. Se o destino retornar normalmente, o adaptador retornará esse valor. Se uma exceção que corresponde ao tipo especificado for gerada, o identificador de fallback será chamado na exceção, além dos argumentos originais.

O destino e o manipulador devem ter os mesmos tipos de argumento e retorno correspondentes, exceto que o manipulador pode omitir argumentos à direita (da mesma forma que o predicado).#guardWithTest guardWithTest Além disso, o manipulador deve ter um parâmetro adicional à esquerda ou exType um supertipo.

Aqui está o pseudocódigo para o adaptador resultante. No código, T representa o tipo de retorno do target e handler, e correspondentemente o do adaptador resultante; A/a, os tipos e valores de argumentos para o identificador resultante consumido por handler; e/Bb , aqueles de argumentos para o identificador resultante descartado por .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> Observe que os argumentos salvos (a... no pseudocódigo) não podem ser modificados pela execução do destino e, portanto, são passados inalterados do chamador para o manipulador, se o manipulador for invocado.

O destino e o manipulador devem retornar o mesmo tipo, mesmo que o manipulador sempre seja lançado. (Isso pode acontecer, por exemplo, porque o manipulador está simulando uma finally cláusula). Para criar esse manipulador de lançamento, redigir a lógica de criação do manipulador com #throwException throwException, a fim de criar um identificador de método do tipo de retorno correto.

Documentação Java para java.lang.invoke.MethodHandles.catchException(java.lang.invoke.MethodHandle, java.lang.Class<? extends java.lang.Throwable>, java.lang.invoke.MethodHandle).

Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Project Open Source do Open Source e usadas de acordo com os termos descritos na Creative Commons 2.5.

Aplica-se a