Windows商店应用程序中是否存在全局异常处理程序?

时间:2012-11-29 23:33:00

标签: c# debugging exception-handling windows-8 windows-store-apps

对于未处理的异常,至少,我希望能够捕获详细信息并将其写入文件,以便进行后续的调试取证。"没有" 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>

更新2

关闭App.xaml并重建后,一切都很好...... ???哦,好吧 - 我认为一切都很顺利。

更新3

有趣的是,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();
    }
}

1 个答案:

答案 0 :(得分:8)

对于HTML5 / JavaScript应用,您可以将onerror事件作为捕获信息的最后机会。

对于基于XAML的应用,您可以使用UnhandledException;但是,它只捕获通过XAML(UI)框架出现的异常,并且您并不总是获得有关根本原因的大量信息,即使在InnerException中也是如此。

Windows 8.1更新: UnhandledException也会捕获async void方法创建的异常。在Windows 8中,此类异常只会使应用程序崩溃。 LunarFrog在他们的网站上有一个很好的discussion