Actualización: noviembre 2007
Se produce cuando una aplicación inicia una excepción que no se controla.
Espacio de nombres:
System.Windows
Ensamblado:
PresentationFramework (en PresentationFramework.dll)
XMLNS para XAML: http://schemas.microsoft.com/winfx/xaml/presentation
Visual Basic (Declaración)
Public Event DispatcherUnhandledException As DispatcherUnhandledExceptionEventHandler
Dim instance As Application
Dim handler As DispatcherUnhandledExceptionEventHandler
AddHandler instance.DispatcherUnhandledException, handler
public event DispatcherUnhandledExceptionEventHandler DispatcherUnhandledException
public:
event DispatcherUnhandledExceptionEventHandler^ DispatcherUnhandledException {
void add (DispatcherUnhandledExceptionEventHandler^ value);
void remove (DispatcherUnhandledExceptionEventHandler^ value);
}
/** @event */
public void add_DispatcherUnhandledException (DispatcherUnhandledExceptionEventHandler value)
/** @event */
public void remove_DispatcherUnhandledException (DispatcherUnhandledExceptionEventHandler value)
JScript no admite eventos.
<object DispatcherUnhandledException="DispatcherUnhandledExceptionEventHandler" .../>
De forma predeterminada, Windows Presentation Foundation (WPF) detecta las excepciones no controladas, las notifica a los usuarios mediante un cuadro de diálogo (que pueden usar para notificar la excepción) y cierra automáticamente la aplicación.
Sin embargo, si una aplicación necesita procesar las excepciones no controladas de manera personalizada desde una ubicación centralizada, es preciso controlar el evento DispatcherUnhandledException.
Application provoca el evento DispatcherUnhandledException para cada excepción que no es controlada por el código que se ejecuta en el principal subproceso de la interfaz de usuario.
Si una excepción no se controla en un subproceso en segundo plano de la interfaz de usuario (UI) (subproceso con su propio Dispatcher) o un subproceso de trabajo en segundo plano (subproceso sin Dispatcher), no se reenvía al principal subproceso de la interfaz de usuario. Por consiguiente, no se provoca el evento DispatcherUnhandledException. En estas circunstancias, necesitará escribir código para que se realicen las siguientes acciones:
Controlar las excepciones en el subproceso en segundo plano.
Enviar esas excepciones al principal subproceso de la interfaz de usuario.
Volver a producirlas en el principal subproceso de la interfaz de usuario sin controlarlas para que se provoque el evento DispatcherUnhandledException.
Para obtener más información, vea la información general sobre Modelo de subprocesos.
Al controlador de eventos DispatcherUnhandledException se le pasa un argumento DispatcherUnhandledExceptionEventArgs que contiene información contextual sobre la excepción, con los siguientes datos:
Puede utilizar esta información para determinar si la excepción es recuperable o no. Una excepción recuperable podría ser, por ejemplo, la excepción FileNotFoundException, mientras que una excepción irrecuperable podría ser, por ejemplo, la excepción StackOverflowException.
Cuando se procesa una excepción no controlada de DispatcherUnhandledException y se desea que WPF no siga procesándola, es preciso establecer la propiedad Handled en true.
A diferencia de los otros eventos que Application provoca, DispatcherUnhandledException no tiene una implementación virtual protegida correspondiente (OnDispatcherUnhandledException). Por consiguiente, las clases que se derivan de Application siempre deben registrar un controlador de eventos con DispatcherUnhandledException para procesar las excepciones no controladas.
En el ejemplo siguiente se muestra cómo procesar las excepciones no controladas administrando el evento DispatcherUnhandledException.
using System.Windows; // Application
using System.Windows.Threading; // DispatcherUnhandledExceptionEventArgs
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;
}
}
}
Windows Vista
.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.
.NET Framework
Compatible con: 3.5, 3.0
Referencia
Otros recursos