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
처리기가 catch할 예외의 형식
- handler
- MethodHandle
일치하는 예외가 throw되면 호출할 메서드 핸들
반환
지정된 try/catch 논리를 통합하는 메서드 핸들
- 특성
설명
예외 처리기 내에서 실행하여 대상 메서드 핸들을 조정하는 메서드 핸들을 만듭니다. 대상이 정상적으로 반환되면 어댑터는 해당 값을 반환합니다. 지정된 형식과 일치하는 예외가 throw되면 대체 핸들이 대신 예외와 원래 인수에 대해 호출됩니다.
처리기가 후행 인수를 생략할 수 있다는 점을 제외하고 대상 및 처리기는 동일한 해당 인수 및 반환 형식을 가져야 합니다(조건자와 #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...
의사 코드)를 수정할 수 없으므로 처리기가 호출된 경우 호출자에서 처리기로 변경되지 않고 전달됩니다.
처리기가 항상 throw되더라도 대상 및 처리기는 동일한 형식을 반환해야 합니다. 예를 들어 처리기가 절을 시뮬레이션하기 finally
때문에 발생할 수 있습니다. 이러한 throw 처리기를 만들려면 올바른 반환 형식의 메서드 핸들을 만들기 위해 처리기 생성 논리를 작성 #throwException throwException
합니다.
이 페이지의 일부는 Android 오픈 소스 프로젝트에서 만들고 공유하고 Creative Commons 2.5 특성 라이선스에 설명된 용어에 따라 사용되는 작업을 기반으로 하는 수정 사항입니다.