Forzando la captura de excepciones no manejadas en WPF

by Valeriano Tortola 20. marzo 2008 05:18

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).

Tags: ,

C# 3.0 | .NET 3.5

Comentarios

20/03/2008 7:21:41 #

trackback

Trackback from Pensando en asíncrono

Forzando la captura de excepciones no manejadas en WPF

Pensando en asíncrono |

20/03/2008 7:22:23 #

trackback

Trackback from vtortola

Forzando la captura de excepciones no manejadas en WPF

vtortola |

Comentarios no permitidos