Compartir vía


Application.DispatcherUnhandledException Evento

Definición

Se produce cuando una aplicación inicia una excepción que no se controla.

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

Ejemplos

En el ejemplo siguiente se muestra cómo procesar excepciones no controladas mediante el control del 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

Comentarios

De forma predeterminada, Windows Presentation Foundation detecta excepciones no controladas, notifica a los usuarios la excepción desde un cuadro de diálogo (desde el que pueden notificar la excepción) y cierra automáticamente una aplicación.

Sin embargo, si una aplicación necesita realizar un procesamiento de excepciones no controlado personalizado desde una ubicación centralizada, debe controlar DispatcherUnhandledException.

DispatcherUnhandledException se genera mediante una Application excepción para cada excepción no controlada por el código que se ejecuta en el subproceso principal de la interfaz de usuario.

Si una excepción no se controla en un subproceso de interfaz de usuario en segundo plano (un subproceso con su propio Dispatcher) o en un subproceso de trabajo en segundo plano (un subproceso sin Dispatcher), la excepción no se reenvía al subproceso principal de la interfaz de usuario. Por lo tanto, DispatcherUnhandledException no se genera. En estas circunstancias, deberá escribir código para hacer lo siguiente:

  1. Controle las excepciones en el subproceso en segundo plano.

  2. Envíe esas excepciones al subproceso principal de la interfaz de usuario.

  3. Vuelva a iniciarlos en el subproceso principal de la interfaz de usuario sin controlarlos para permitir DispatcherUnhandledException que se generen.

Para obtener más información, consulte información general sobre el modelo de subprocesos .

El DispatcherUnhandledException controlador de eventos se pasa un DispatcherUnhandledExceptionEventArgs argumento que contiene información contextual sobre la excepción, entre las que se incluyen:

Puede usar esta información para determinar si una excepción es recuperable o no. Una excepción recuperable podría ser , FileNotFoundExceptionpor ejemplo, mientras que una excepción irrecuperable podría ser , StackOverflowExceptionpor ejemplo.

Al procesar una excepción no controlada desde DispatcherUnhandledExceptiony no desea que WPF continúe procesandola, debe establecer la Handled propiedad trueen .

A diferencia de los demás eventos que Application se generan, DispatcherUnhandledException no tiene una implementación virtual protegida coincidente (OnDispatcherUnhandledException). Por consiguiente, las clases que derivan de Application siempre deben registrar un controlador de eventos con DispatcherUnhandledException para procesar excepciones no controladas.

Se aplica a