4

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

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

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

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

4

3 回答 3

5

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

发生这种情况时,可以在事件日志中的“管理事件”下找到错误

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

于 2012-12-10T11:03:11.613 回答
4

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

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

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

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)]);
      });
};
于 2012-12-07T18:04:27.387 回答
0

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

于 2012-12-07T21:01:33.467 回答