在页面之间导航时,我的WinJS应用程序中出现随机崩溃。
问题是当应用程序附加到Visual Studio调试器时,这些崩溃永远不会发生;所以我找不到他们来自哪里。
我使用WinJS.Application.onerror事件来防止崩溃,并记录发生的事情,但是当我尝试使用随机异常时这很有效,我的“无法捕获”崩溃似乎不会触发此事件(我不要没有任何记录。
您是否知道可能导致这些崩溃的原因,或任何解决方案以找到更多信息?
答案 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。