我正在开发一个Windows Phone应用程序。 我将它提交给Microsoft,他们向我发送了一个文件,描述了恢复应用程序时出现的错误(相对于5.2性能和资源管理,点5.2.3)。
要重现错误,我运行应用程序,我从启动按钮开始转到“桌面”并单击“返回”按钮。
之后,visual studio以黄色突出显示此代码中的System.Diagnostics.Debugger.Break();
行
// Code to execute on Unhandled Exceptions
private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
{
if (System.Diagnostics.Debugger.IsAttached)
{
// An unhandled exception has occurred; break into the debugger
System.Diagnostics.Debugger.Break();
}
}
使用堆栈跟踪,我发现最后一个被调用的方法是CallApplicationUEHandler
。
那么,这是一个众所周知的例外吗?我忘了处理一些例外吗?
以下是CallApplicationUEHandler调用之上的最后三行输出:
first chance exception 'System.ArgumentNullException' in Microsoft.Phone.Controls.dll
first chance exception 'System.ArgumentException' in System.Windows.dll
first chance exception 'System.ArgumentException' in System.Windows.dll
构造函数:
对于MainPage:
public MainPage()
{
journal.Debug(string.Format("Entrée méthode {0}", new StackTrace().GetFrame(1).GetMethod().Name));
InitializeComponent();
Loaded += new RoutedEventHandler(PhoneApplicationPage_Loaded);
}
private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
{
mainVM = new MainViewModel();
DataContext = mainVM;
}
对于App:
public App()
{
// Global handler for uncaught exceptions.
// Note that exceptions thrown by ApplicationBarItem.Click will not get caught here.
UnhandledException += Application_UnhandledException;
// Standard Silverlight initialization
InitializeComponent();
// Phone- {2} -specific initialization
InitializePhoneApplication();
}
private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
{
if (System.Diagnostics.Debugger.IsAttached)
{
// An unhandled exception has occurred; break into the debugger
System.Diagnostics.Debugger.Break();
}
}
答案 0 :(得分:1)
通过调用Application_UnhandledException
这个事实很可能你不会在某个地方处理异常。
通过查看正在加载的页面的页面构造函数以及OnNavigatedTo
事件处理程序(如果有的话)来调试它。
在应用级别,查看您在Application_Activated
中所做的工作。
答案 1 :(得分:0)
将您的代码放入Try-Catch Block。我也遇到了这样的问题,但后来由异常处理方法处理。
try
{
// your code
}
catch (Exception ex)
{
throw (ex);
}