具有无法捕获的崩溃的WinJS应用程序

时间:2012-12-07 16:57:10

标签: windows-8 winjs

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

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

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

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

3 个答案:

答案 0 :(得分:5)

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

如果发生错误,可以在“管理事件”

下的事件日志中找到错误

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

答案 1 :(得分:4)

杰森为这个问题提供了一个很好的解决方案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)]);
      });
};

答案 2 :(得分:0)

JavaScript中异常的最后一站实际上是window.onerror;并非所有异常都会通过WinJS.Application.onerror抛出。尝试直接挂钩window.onerror。