Ale*_*lex 1 .net c# windows-phone-7 windows-phone windows-phone-8
在我的Windows Phone应用程序中,我Application.UnhandledException用来捕获所有未处理的错误.如果发生这种错误,那么我的应用程序会显示一个简单MessageBox的请求,通过电子邮件向开发人员发送错误报告.它看起来像这样:
protected virtual void OnUnhandledException(
object sender, ApplicationUnhandledExceptionEventArgs e)
{
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
var result = MessageBox.Show(
"Would you like to send a report to developers?",
"Error",
MessageBoxButton.OKCancel);
if (result == MessageBoxResult.OK)
{
var task = new EmailComposeTask();
task.To = "feedback@site.com";
task.Subject = "Error";
task.Body =
e.ExceptionObject + "\n" + e.ExceptionObject.StackTrace;
task.Show();
e.Handled = true;
}
});
}
Run Code Online (Sandbox Code Playgroud)
在大多数情况下,一切正常.
但许多用户抱怨说,有时应用程序只是崩溃而没有消息.我在开发人员的仪表板中有一些崩溃报告,但这些报告只有非常少量的有用信息.我无法理解什么样的错误会导致这种情况.我只假设在一个后台线程中发生了一些错误.
是Application.UnhandledException正常工作在所有情况下?一些例外是否仍然未得到处理?在上述情况下可以做些什么?
谢谢.
除了其他答案中的要点之外,您无法保证Dispatcher仍在运行或者UI线程将再次执行.
当然,如果应用程序或操作系统处于不良状态(尤其是使用OutOfMemory),任何做任何事情的尝试都可能失败.所以越少做得越好 - 这样你就不会搞砸手机收集并上传到商店的崩溃报告.
您应该将异常详细信息写入,IsolatedStorage并在下次启动应用时检测是否存在过去的异常.
| 归档时间: |
|
| 查看次数: |
1517 次 |
| 最近记录: |