17

至少对于未处理的异常,我希望能够捕获详细信息并将它们写到文件中,以供可能的后续“调试取证”。Windows 商店应用程序中没有“OnTerminating”事件;有没有合适的地方/方法来完成这个?

更新

请参阅下面的评论。这是一个不适合下面的补充:

即使在删除 xaml 片段时,我仍然会收到那个错误消息,即使在清理和重建之后......?2-clicking err msg 将我带到 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();
    }
}
4

1 回答 1

8

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

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

Windows 8.1 更新: UnhandledException还将捕获由async void方法创建的异常。在 Windows 8 中,此类异常只会使应用程序崩溃。LunarFrog 在他们的网站上对此进行了很好的讨论

于 2012-12-02T03:55:40.700 回答