다음을 통해 공유


Application.DispatcherUnhandledException 이벤트

정의

애플리케이션에서 예외가 throw되었지만 처리되지 않은 경우에 발생합니다.

public:
 event System::Windows::Threading::DispatcherUnhandledExceptionEventHandler ^ DispatcherUnhandledException;
public event System.Windows.Threading.DispatcherUnhandledExceptionEventHandler DispatcherUnhandledException;
member this.DispatcherUnhandledException : System.Windows.Threading.DispatcherUnhandledExceptionEventHandler 
Public Custom Event DispatcherUnhandledException As DispatcherUnhandledExceptionEventHandler 

이벤트 유형

예제

다음 예제에서는 이벤트를 처리 하 여 처리 되지 않은 예외를 처리 하는 방법을 보여 줍니다 DispatcherUnhandledException .

using System.Windows;
using System.Windows.Threading;

namespace SDKSample
{
    public partial class App : Application
    {
        void App_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
        {
            // Process unhandled exception

            // Prevent default unhandled exception processing
            e.Handled = true;
        }
    }
}
Imports System.Windows
Imports System.Windows.Threading

Namespace SDKSample
    Partial Public Class App
        Inherits Application
        Private Sub App_DispatcherUnhandledException(ByVal sender As Object, ByVal e As DispatcherUnhandledExceptionEventArgs)
            ' Process unhandled exception

            ' Prevent default unhandled exception processing
            e.Handled = True
        End Sub
    End Class
End Namespace

설명

기본적으로 Windows Presentation Foundation (올 이러한 예외를 보고할 수) 대화 상자에서 예외는 사용자에 게 알려줍니다 하며 애플리케이션에 자동으로 종료 처리 되지 않은 예외를 catch 합니다.

그러나는 애플리케이션을 중앙된 위치에서 사용자 지정 처리 되지 않은 예외 처리를 수행 하는 경우를 처리 해야 DispatcherUnhandledException합니다.

DispatcherUnhandledException는 기본 UI 스레드에서 실행되는 코드에 의해 처리되지 않는 각 예외에 대해 에 의해 Application 발생합니다.

백그라운드 UI 스레드(자체 Dispatcher스레드) 또는 백그라운드 작업자 스레드(가 없는 Dispatcher스레드)에서 예외가 처리되지 않으면 예외가 기본 UI 스레드로 전달되지 않습니다. 따라서 는 DispatcherUnhandledException 발생하지 않습니다. 이러한 경우 다음을 수행하려면 코드를 작성해야 합니다.

  1. 백그라운드 스레드에서 예외를 처리합니다.

  2. 이러한 예외를 기본 UI 스레드로 디스패치합니다.

  3. 발생을 허용 DispatcherUnhandledException 하도록 처리하지 않고 기본 UI 스레드에서 다시 throw합니다.

자세한 내용은 스레딩 모델 개요를 참조하세요.

DispatcherUnhandledException 이벤트 처리기는 다음을 DispatcherUnhandledExceptionEventArgs 포함하여 예외에 대한 컨텍스트 정보를 포함하는 인수를 전달합니다.

이 정보를 사용하여 예외를 복구할 수 있는지 여부를 확인할 수 있습니다. 예를 들어 복구 가능한 예외는 FileNotFoundException일 수 있지만 복구할 수 없는 예외는 일 StackOverflowException수 있습니다.

에서 DispatcherUnhandledException처리되지 않은 예외를 처리하고 WPF에서 처리를 계속하지 않으려면 속성을 true로 설정 Handled 해야 합니다.

를 발생시키는 Application 다른 이벤트와 DispatcherUnhandledException 달리 에는 일치하는 보호된 가상 구현(OnDispatcherUnhandledException)이 없습니다. 따라서 에서 파생 Application 되는 클래스는 처리되지 않은 예외를 처리하려면 항상 에 이벤트 처리기를 DispatcherUnhandledException 등록해야 합니다.

적용 대상