다음을 통해 공유


IDebugStackFrame3::InterceptCurrentException

현재 스택 프레임의 디버거가 현재 예외를 가로채려고 할 때 호출됩니다.

구문

int InterceptCurrentException(
   uint dwFlags,
   out  ulong pqwCookie
);

매개 변수

dwFlags
[in] 다른 작업을 지정합니다. 현재 INTERCEPT_EXCEPTION_ACTIONIEA_INTERCEPT만 지원되므로 지정되어야만 합니다.

pqwCookie
[out] 특정 예외를 식별하는 고유 값입니다.

Return Value

성공하면 S_OK를 반환하고 실패하면 오류 코드를 반환합니다.

다음은 가장 일반적인 오류 반환입니다.

오류 설명
E_EXCEPTION_CANNOT_BE_INTERCEPTED 현재 예외를 가로챌 수 없습니다.
E_EXCEPTION_CANNOT_UNWIND_ABOVE_CALLBACK 현재 실행 프레임에서 아직 처리기를 검색하지 않았습니다.
E_INTERCEPT_CURRENT_EXCEPTION_NOT_SUPPORTED 이 메서드는 이 프레임에서는 지원되지 않습니다.

설명

예외가 throw되면 디버거는 예외 처리 프로세스 중 주요 지점에서 런타임을 제어합니다. 이러한 중요한 순간 동안 디버거는 프레임이 예외를 가로채려고 하는지 현재 스택 프레임에 요청할 수 있습니다. 이러한 방식으로 가로채는 예외는 기본적으로 스택 프레임에 예외 처리기(예: 프로그램 코드의 try/catch 블록)가 없는 경우에도 스택 프레임에 대한 즉석 예외 처리기입니다.

디버거가 예외를 가로채야 하는지 확인하려면 현재 스택 프레임 개체에서 이 메서드를 호출합니다. 이 메서드는 예외의 모든 세부 정보를 처리하는 역할을 합니다. IDebugStackFrame3 인터페이스가 구현되지 않았거나 InterceptStackException 메서드가 오류를 반환하면 디버거가 예외를 정상적으로 계속 처리합니다.

참고 항목

예외는 관리 코드, 즉 디버그 중인 프로그램이 .NET 런타임에 따라 실행되는 경우에만 가로챌 수 있습니다. 물론 타사 언어 구현자는 원하는 경우 자체 디버그 엔진에서 InterceptStackException을 구현할 수 있습니다.

가로채기가 완료되면 IDebugInterceptExceptionCompleteEvent2의 신호가 표시됩니다.

참고 항목