다음을 통해 공유


System.AppDomain.UnhandledException 이벤트

이 문서에서는 이 API에 대한 참조 설명서에 대한 추가 설명서를 제공합니다.

UnhandledException 이벤트는 catch되지 않은 예외에 대한 알림을 제공합니다. 애플리케이션을 시스템 기본 처리기는 사용자에 게 예외를 보고 하 고 애플리케이션을 종료 하기 전에 예외에 대 한 정보를 기록할 수 있습니다. 애플리케이션 상태에 대한 충분한 정보를 사용할 수 있는 경우 나중에 복구할 수 있도록 프로그램 데이터를 저장하는 등의 다른 작업이 수행될 수 있습니다. 예외가 처리되지 않을 때 프로그램 데이터가 손상될 수 있으므로 주의해야 합니다. 또한 예외가 throw될 때 잠금을 유지하는 동안 처리기가 실행되므로 교착 상태가 발생할 수 있는 다른 리소스를 기다리지 않도록 주의해야 합니다.

모든 애플리케이션 도메인에서이 이벤트를 처리할 수 있습니다. 그러나 예외가 발생 하는 애플리케이션 도메인 이벤트 반드시 발생 하지 않습니다. 스레드에 대 한 전체 스택 정리 된 스레드가 시작 된 애플리케이션 도메인에서 첫 번째 위치는 이벤트가 발생할 수 있습니다 이므로 적절 한 예외 처리기를 찾지 못하고 하는 경우에 예외가 처리 되지 않습니다.

경우는 UnhandledException 기본 애플리케이션 도메인에서 이벤트를 처리, 처리 되지 않은 예외는 애플리케이션 도메인에 관계 없이 모든 스레드에서 스레드가 시작에 대 한 있습니다 발생 합니다. 에 대 한 이벤트 처리기가 애플리케이션 도메인에서 스레드가 시작 하는 경우 UnhandledException, 해당 애플리케이션 도메인에서 이벤트가 발생 합니다. 해당 애플리케이션 도메인에서 기본 애플리케이션 도메인 아니며 기본 애플리케이션 도메인 이벤트 처리기도가 이벤트 모두 애플리케이션 도메인에서 발생 합니다.

예를 들어, 가정 스레드가 시작 애플리케이션 도메인 "AD1", "AD2" 애플리케이션 도메인에서 메서드를 호출 및 여기에서 메서드를 호출 애플리케이션 도메인 "AD3"에서 예외가 throw 되 합니다. 첫 번째 애플리케이션 도메인을 UnhandledException 이벤트가 발생할 수 있습니다 "AD1" 됩니다. 해당 대화 상자가 기본 애플리케이션 도메인이 아닌 경우에 해당 애플리케이션 도메인 이벤트는 기본 애플리케이션 도메인에도 발생할 수 있습니다.

참고 항목

공용 언어 런타임은 이벤트에 대한 이벤트 처리기가 실행되는 동안 스레드 중단을 UnhandledException 일시 중단합니다.

이벤트 처리기에 적절한 플래그가 있는 ReliabilityContractAttribute 특성이 있는 경우 이벤트 처리기는 제한된 실행 영역으로 처리됩니다.

.NET Framework 4부터 이 이벤트는 이벤트 처리기가 보안에 중요하고 특성이 없는 한 스택 오버플로 또는 액세스 위반과 같은 프로세스의 상태를 손상시키는 HandleProcessCorruptedStateExceptionsAttribute 예외에 대해 발생하지 않습니다.

이 이벤트에 대한 이벤트 처리기를 등록하려면 필요한 권한이 있거나 throw SecurityException 되어야 합니다.

이벤트 처리에 대한 자세한 내용은 이벤트 처리 및 발생 을 참조하십시오.

처리되지 않은 예외에 대한 기타 이벤트

특정 애플리케이션 모델은 UnhandledException 이벤트 주 애플리케이션 스레드에 처리 되지 않은 예외가 발생 하는 경우 다른 이벤트에 의해 선점 될 수 있습니다.

Windows Forms를 사용 하는 애플리케이션에서 처리 되지 않은 주 애플리케이션 스레드 원인에는 예외는 Application.ThreadException 이벤트가 발생 합니다. 이 이벤트가 처리 된 경우 기본 동작은 처리 되지 않은 예외가 애플리케이션을 종료 되지 않도록 애플리케이션은 알 수 없는 상태로 남아 있지만. 이 경우 UnhandledException 이벤트가 발생하지 않습니다. 애플리케이션 구성 파일을 사용 하거나 사용 하 여이 동작을 변경할 수 있습니다 합니다 Application.SetUnhandledExceptionMode 모드를 변경 하는 방법 UnhandledExceptionMode.ThrowException 하기 전에 ThreadException 이벤트 처리기 후크 되어 있습니다. 이 주 애플리케이션 스레드에만 적용 됩니다. 다른 UnhandledException 스레드에서 throw된 처리되지 않은 예외에 대해 이벤트가 발생합니다.

Visual Basic 애플리케이션 프레임워크는 기본 애플리케이션 스레드에서 처리되지 않은 예외에 대한 또 다른 이벤트인 WindowsFormsApplicationBase.UnhandledException 이벤트를 제공합니다. 이 이벤트에는 사용되는 이벤트 인수 개체와 이름이 같지만 속성이 다른 이벤트 인수 개체 AppDomain.UnhandledException가 있습니다. 특히이 이벤트 인수 개체에는 ExitApplication 속성을 사용 하는 애플리케이션 실행, 처리 되지 않은 예외를 무시 (및 애플리케이션을 알 수 없는 상태로 유지)를 계속 합니다. 이 경우 AppDomain.UnhandledException 이벤트가 발생하지 않습니다.