Silverlight导航应用程序:如何在页面级别捕获异常?

时间:2010-03-06 19:13:38

标签: silverlight

我们知道我们可以通过使用Application.Current.UnhandledException在应用程序级别捕获任何意外的异常。有什么办法可以在页面级而不是应用程序级别捕获异常吗?

1 个答案:

答案 0 :(得分:1)

不是真的。页面实际上没有任何特定的执行范围。您可以随时在给定屏幕上拥有多个页面。但是在Visual Studio中的Silverlight导航应用程序项目模板中,有一个非常愚蠢的代码块可以隐藏您的异常并将其转换为无用的“导航失败”消息。

这是在Frame.NavigationFailed事件中,该事件是在导航到特定页面时针对异常引发的。但不是之后发生的例外。如果你想访问异常,它就在EventArgs。

private void ContentFrame_NavigationFailed( object sender, NavigationFailedEventArgs e )
{

    e.Handled = true;

    // the navigation template does this. useless
    //ChildWindow errorWin = new ErrorWindow( e.Uri );

    // this will show the exception
    ChildWindow errorWin = new ErrorWindow( e.Exception );

    errorWin.Show( );
}