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}\n\n{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
Published 19/3/2008 23:21 por Valeriano Tórtola
Comparte este post:
http://geeks.ms/blogs/vtortola/archive/2008/03/19/forzando-la-captura-de-excepciones-no-manejadas-en-wpf.aspx

Comentarios

# re: Forzando la captura de excepciones no manejadas en WPF

Gracias men. esta parte de excepciones en wpf es un tantico problematico.

Wednesday, April 02, 2008 4:42 PM por Romny