在页面之间导航时,我的 WinJS 应用程序出现随机崩溃。
问题是当应用程序附加到 Visual Studio 调试器时,这些崩溃永远不会发生。所以我找不到他们来自哪里。
我使用 WinJS.Application.onerror 事件来防止崩溃并记录发生的情况,但是当我尝试随机异常时效果很好,我的“无法捕获”崩溃似乎不会触发此事件(我没有任何记录)。
您是否知道可能导致这些崩溃的原因,或者找到更多信息的解决方案?
有时错误无法触发 WinJS.Application.onerror 有几个原因(在我的应用程序中,问题出在 iframe 中,在不使用 winjs 的页面中)。
发生这种情况时,可以在事件日志中的“管理事件”下找到错误
在这个链接上找到这个: http ://www.davepaquette.com/archive/2012/09/15/windows-8-store-app-crash-logs.aspx
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)]);
});
};
JavaScript 中异常的最后一站实际上是 window.onerror;不是每个异常都会通过 WinJS.Application.onerror 抛出。尝试直接挂钩 window.onerror。