【问题标题】:WinJS app with an uncatchable crashWinJS 应用程序出现无法捕获的崩溃
【发布时间】:2014-01-03 13:10:21
【问题描述】:

在页面之间导航时,我的 WinJS 应用程序发生随机崩溃。

问题在于,当应用程序附加到 Visual Studio 调试器时,这些崩溃永远不会发生;所以我找不到它们来自哪里。

我使用 WinJS.Application.onerror 事件来防止崩溃并记录发生的情况,但是当我尝试随机异常时效果很好,我的“无法捕获”崩溃似乎不会触发此事件(我不'没有任何记录)。

您是否知道可能导致这些崩溃的原因,或者有任何解决方案可以找到更多信息?

【问题讨论】:

    标签: windows-8 winjs


    【解决方案1】:

    有时错误无法触发 WinJS.Application.onerror 有几个原因(在我的应用程序中,问题出在 iframe 中,在未使用 winjs 的页面中)。

    当它发生时,可以在事件日志中的“管理事件”下找到错误

    在这个链接上找到这个: http://www.davepaquette.com/archive/2012/09/15/windows-8-store-app-crash-logs.aspx

    【讨论】:

    • 好消息!冒泡到 Windows 事件日志中的事件与您从应用商店崩溃转储中获得的覆盖范围几乎相同。因此,只要您不阻止 WinJS.Application.onerror 上的气泡,您就可以相信“无法解释的崩溃”在生产中不会被忽视。
    【解决方案2】:

    Jason 为这个问题提供了一个很好的解决方案in this video(从 14:48 开始)。在他的示例中,如果您有回调并在回调完成之前导航到不同的页面,应用程序就会崩溃。您的应用程序可能是这种情况吗?有关导航时发生的事情的更多详细信息?

    对于其他人(因为您似乎已经知道这一点!):

    为了能够更轻松地进行调试,请使用WinJS.Application.OnError event。连接一个事件处理程序,在应用程序崩溃之前转储出有关问题的信息。

    WinJS.Application.onerror = function (info) {
       var err = {
         errorMessage: info.detail.errorMessage,
         errorUrl: info.detail.errorUrl,
         errorLine: info.detail.errorLine,
         errorCharacter: info.detail.errorCharacter,
       };
    
       Windows.Storage.ApplicationData.current.localFolder
          .createFileAsync("crash.txt", Windows.Storage.CreationCollisionOption.openIfExists)
          .then(function (file) {
             Windows.Storage.FileIO.appendLinesAsync(file, [JSON.stringify(err)]);
          });
    };
    

    【讨论】:

    • 当我导航时,除了后退导航我什么都不做;所以我认为这是一个回调问题。但我找不到它可能来自哪里,而且我仍然没有任何记录。有没有一种方法可以让应用程序在不引发 onerror 事件的情况下崩溃?
    • 好的,我发现了一个应用程序如何在不调用 app.onerror 的情况下崩溃。 davepaquette.com/archive/2012/09/15/… 详细信息在事件日志中,我找到了异常的来源(崩溃的 iframe 中的外部页面)
    【解决方案3】:

    JavaScript 中异常的最后一站实际上是 window.onerror;不是每个异常都会通过 WinJS.Application.onerror 抛出。尝试直接 hook window.onerror。

    【讨论】:

    • 我刚刚尝试使用 window.onerror,但它并没有因我的异常而上升。
    猜你喜欢
    • 1970-01-01
    • 2012-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-14
    相关资源
    最近更新 更多