UWP javascript 崩溃

Posted

技术标签:

【中文标题】UWP javascript 崩溃【英文标题】:UWP javascript crashes 【发布时间】:2020-11-05 21:03:33 【问题描述】:

我在 VS2017 上使用 UWP javascript 应用程序。每次出现 javascript 异常时,应用程序都会崩溃。可重现的步骤是 1.打开VS2017 2. 从已安装的模板菜单中选择 Javascript 3.选择空白应用(通用窗口)

现在在JS项目里面,写可以异常的代码,例如:

var t;
console.log(t.length) //t is undefined, so t.length will cause an error

我的问题如下:

    有没有办法像 iosandroid 那样避免这些崩溃 我们在哪里可以找到这些故障转储。我已使用 URL (https://docs.microsoft.com/en-us/windows/win32/wer/collecting-user-mode-dumps?redirectedfrom=MSDN) 启用故障转储。但我只能本机/托管崩溃(如 C++、C#)而不是 javascript 崩溃

【问题讨论】:

【参考方案1】:

您可以尝试创建WinJs App,提供应用程序的生命周期管理WinJS.Application,提供onerror事件处理应用程序中未捕获的错误。

你可以在这里处理事件,并通过return true的方式告诉应用你已经处理了异常,那么应用不会终止。

var app = WinJS.Application;
app.onerror = function (args) 
    console.log(args.detail.error);
    return true;
;

【讨论】:

感谢 Richard!,这对我的示例项目很有用。将尝试在我的实际工作中使用它。添加这个是否意味着,UWP 不会因所有 JS 异常而崩溃,并且无需查看为这些异常生成的崩溃日志(如果有)。 您好,应用崩溃的原因不仅仅是未捕获的错误。全局监听onerror事件的主要目的是捕捉错误并进行处理。应分析和修复应用程序运行过程中出现的错误,这有助于创建运行良好的程序。 好的,onerror 处理程序肯定是我处理异常的地方。但我想知道的是,当这种未处理的异常发生时,我永远无法在用户模式转储中检索堆栈跟踪。那是我的问题。还是谢谢 @RichardZhang-MSFT - 是什么导致了这次崩溃?我在其他使用 JS 运行时的设备上看不到这个?这似乎非常特定于 UWP (JS)。 在我的情况下没有帮助,如果发生任何 javascript 错误,整个发布应用程序仍然会崩溃。当调试错误是由 onerror func 发现但它仍然关闭应用程序时

以上是关于UWP javascript 崩溃的主要内容,如果未能解决你的问题,请参考以下文章

UWP 树视图崩溃

UWP 应用程序崩溃而不是显示消息对话框

UWP Application Insights 没有崩溃的调用堆栈

为啥 Windows 10 UWP 应用程序由于调用了为不同线程编组的接口而崩溃?

UWP 应用程序在未处于调试模式时崩溃

Windows 10 UWP 应用程序在启动时崩溃(错误模块名称:Windows.UI.Xaml.dll)