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