对于未处理的异常,至少,我希望能够捕获详细信息并将其写入文件,以便进行后续的调试取证。"没有" OnTerminating" Windows商店应用中的事件;是否有合适的地方/方式来实现这一目标?
请参阅下面的评论。以下是一个不太适合的补充:
即使在删除xaml片段时,我仍然会得到错误的消息,甚至在清理和重建之后... ??? 2点击错误信息只需将我带到App.xaml的顶部,现在全部都是:
<Application
x:Class="SpaceOverlays.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:SpaceOverlays">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<!--
Styles that define common aspects of the platform look and feel
Required by Visual Studio project and item templates
-->
<ResourceDictionary Source="Common/StandardStyles.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
关闭App.xaml并重建后,一切都很好...... ???哦,好吧 - 我认为一切都很顺利。
有趣的是,Windows Phone应用程序App.xaml.cs默认具有此处理程序:
// Global handler for uncaught exceptions.
UnhandledException += Application_UnhandledException;
private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
{
if (Debugger.IsAttached)
{
// An unhandled exception has occurred; break into the debugger
Debugger.Break();
}
}
答案 0 :(得分:8)
对于HTML5 / JavaScript应用,您可以将onerror事件作为捕获信息的最后机会。
对于基于XAML的应用,您可以使用UnhandledException;但是,它只捕获通过XAML(UI)框架出现的异常,并且您并不总是获得有关根本原因的大量信息,即使在InnerException中也是如此。
Windows 8.1更新: UnhandledException也会捕获async void
方法创建的异常。在Windows 8中,此类异常只会使应用程序崩溃。 LunarFrog在他们的网站上有一个很好的discussion。