Windows 8 WinJS应用程序出现不可修补的崩溃

Windows 8 WinJS应用程序出现不可修补的崩溃,windows-8,winjs,Windows 8,Winjs,在页面之间导航时,我的WinJS应用程序会随机崩溃 问题是,当应用程序连接到VisualStudio调试器时,这些崩溃永远不会发生;所以我找不到它们来自哪里 我使用WinJS.Application.onerror事件来防止崩溃,并记录发生的情况,但由于这在我尝试使用随机异常时效果良好,我的“不可修补”崩溃似乎不会触发此事件(我没有任何日志记录) 您知道是什么导致了这些崩溃,或者有什么解决方案可以找到更多信息吗?Jason为这个问题提供了一个很好的解决方案(从时间14:48开始)。在他的例子中,

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

问题是,当应用程序连接到VisualStudio调试器时,这些崩溃永远不会发生;所以我找不到它们来自哪里

我使用WinJS.Application.onerror事件来防止崩溃,并记录发生的情况,但由于这在我尝试使用随机异常时效果良好,我的“不可修补”崩溃似乎不会触发此事件(我没有任何日志记录)


您知道是什么导致了这些崩溃,或者有什么解决方案可以找到更多信息吗?

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

对于其他人(因为你似乎已经知道了!)

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

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)]);
      });
};

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

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

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

在该链接上找到此链接:

当我导航时,除了向后导航,我什么也不做;所以我认为这是一个回调问题。但我找不到它可能来自哪里,我仍然没有任何记录。有没有一种方法可以使应用程序在不引发OneError事件的情况下崩溃?好的,我发现了应用程序在不调用app.onerror的情况下是如何崩溃的。详细信息在事件日志中,我找到了异常源(iframe中崩溃的外部页面),我刚刚用window.onerror尝试过,但在我的异常中没有出现。好消息!在Windows事件日志中冒泡的事件与从商店崩溃转储中获得的覆盖范围几乎相同。因此,只要您不阻止WinJS.Application.OneError上出现气泡,您就可以相信“无法解释的崩溃”不会在生产中被忽略。