我们知道我们可以通过使用Application.Current.UnhandledException在应用程序级别捕获任何意外的异常。有什么办法可以在页面级而不是应用程序级别捕获异常吗?
答案 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( );
}