Application.DispatcherUnhandledException Evento

Definição

Ocorre quando uma exceção é lançada por uma aplicação mas não é tratada.

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 

Tipo de Evento

Exemplos

O exemplo seguinte mostra como processar exceções não tratadas ao lidar com o DispatcherUnhandledException evento.

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

Observações

Por defeito, o Windows Presentation Foundation detém exceções não tratadas, notifica os utilizadores a partir de uma caixa de diálogo (a partir da qual podem reportar a exceção) e encerra automaticamente uma aplicação.

No entanto, se uma aplicação precisar de realizar um processamento personalizado de exceções não geridas a partir de uma localização centralizada, deve tratar DispatcherUnhandledExceptionde .

DispatcherUnhandledException é ativado por um Application para cada exceção que não é tratada pelo código a correr na thread principal da interface.

Se uma exceção não for tratada nem num thread de interface em segundo plano (um thread com o seu próprio Dispatcher) nem num thread worker em segundo plano (um thread sem ), Dispatchera exceção não é encaminhada para o thread principal da UI. Consequentemente, DispatcherUnhandledException não é elevado. Nestas circunstâncias, terá de escrever código para fazer o seguinte:

  1. Trate das exceções no tópico em segundo plano.

  2. Despacha essas exceções para o tópico principal da interface.

  3. Relança-os no tópico principal da interface sem os manipular para permitir DispatcherUnhandledException que sejam levantados.

Para mais informações, consulte a visão geral do Modelo de Threading .

O DispatcherUnhandledException gestor de eventos recebe um DispatcherUnhandledExceptionEventArgs argumento que contém informação contextual relativa à exceção, incluindo:

Pode usar esta informação para determinar se uma exceção é recuperável ou não. Uma exceção recuperável pode ser um FileNotFoundException, por exemplo, enquanto uma exceção irrecuperável pode ser um StackOverflowException, por exemplo.

Quando processa uma exceção não tratada de DispatcherUnhandledException e não quer que WPF continue a processá-la, precisa de definir a propriedade Handled para true.

Ao contrário dos outros eventos que Application surgem, DispatcherUnhandledException não tem uma implementação virtual protegida correspondente (OnDispatcherUnhandledException). Consequentemente, classes que derivam de Application devem sempre registar um gestor de eventos com DispatcherUnhandledException para processar exceções não tratadas.

Aplica-se a