예외가 던져졌을 때 발생하는 프로세스를 다음과 같이 설명합니다.
예외 처리 프로세스
예외가 처음 throw되지만 디버그 중인 프로그램의 예외 처리기가 처리하기 전에 디버그 엔진(DE)은 IDebugExceptionEvent2를 SDM (세션 디버그 관리자)에 중지 이벤트로 보냅니다.
IDebugExceptionEvent2는 디버그 패키지의 예외 대화 상자에서 사용자가 첫 번째 기회 예외 알림에서 중지하도록 설정을 지정한 경우에만 전송됩니다.SDM은 IDebugExceptionEvent2::GetException 을 호출하여 예외의 속성을 가져옵니다.
디버그 패키지는 IDebugExceptionEvent2::CanPassToDebuggee 를 호출하여 사용자에게 표시할 옵션을 결정합니다.
디버그 패키지는 사용자에게 첫 번째 예외 대화 상자를 열어 예외를 처리하는 방법을 묻습니다.
사용자가 계속하도록 선택하면 SDM에서 IDebugExceptionEvent2::CanPassToDebuggee를 호출합니다.
메서드가 S_OK를 반환하는 경우 IDebugExceptionEvent2::PassToDebuggee를 호출합니다.
-또는-
메서드가 S_FALSE 반환하면 디버그 중인 프로그램에 예외를 처리할 수 있는 두 번째 기회가 제공됩니다.
디버그 중인 프로그램에 두 번째 기회 예외에 대한 처리기가 없는 경우 DE는 SDM에
IDebugExceptionEvent2을 로 보냅니다.디버그 패키지는 사용자에게 첫 번째 예외 대화 상자를 열어 예외를 처리하는 방법을 묻습니다.
디버그 패키지는 IDebugExceptionEvent2::CanPassToDebuggee 를 호출하여 사용자에게 표시할 옵션을 결정합니다.
디버그 패키지는 사용자에게 두 번째 예외 대화 상자를 열어 예외를 처리하는 방법을 묻습니다.
메서드가 S_OK을 반환하는 경우,
IDebugExceptionEvent2::PassToDebuggee을 호출합니다.