Forzando la captura de excepciones no manejadas en WPF

En .NET 2.0 y WinForms había una forma que ahora ya no es del todo válida en WPF ya que han desaparecido el método Application.SetUnhandledExceptionMode y el evento Application.ThreadException, en su lugar tenemos Application.DispatcherUnhandledException:

<Application x:Class="KiosimWPF.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    StartupUri="Window1.xaml" 
    DispatcherUnhandledException="App_DispatcherUnhandledException">
    <Application.Resources>
         
    </Application.Resources>
</Application>

Luego en el handler del evento podemos evitar que la excepción tumbe la aplicación:

void App_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
{
    // Proceso la excepción:
    Trace.Write(String.Format("({0}):{1}nn{2}",e.Exception.GetType().Name,
                                            e.Exception.Message,
                                            e.Exception.StackTrace));
 
    // Evito que la excepción siga subiendo y tumbe
    // la aplicación marcándola como manejada:
    e.Handled = true;
}

Más info: Información general sobre la administración de aplicaciones (WPF).

Forzando la captura de excepciones no manejadas en WPF| vtortola.NET

Un comentario en “Forzando la captura de excepciones no manejadas en WPF”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *