未处理的 JavaScript 异常终止 MSAppHost/WWAHost.exe
Unhandled JavaScript exception terminates MSAppHost/WWAHost.exe
<!DOCTYPE html>
<html>
<head>
<title>Throw test</title>
</head>
<body>
<button onclick="throw 'does this abort the app'">CRASH</button>
</body>
</html>
此代码作为通用 Windows 应用 (MSAppHost/3.0( (WWAHost.exe( 运行时,将终止应用(退出代码 0x3(。 有没有办法防止这种行为?
我尝试添加窗口错误处理程序,但它不会阻止应用程序终止。
window.onerror = function(e) { return false; }
编辑 这是一个基于 Cordova 的 Windows 10 移动项目,运行现有的 html5 应用程序。必须在每个事件处理程序周围添加 try catch 将是一项令人难以置信的工作量。
编辑 在 JavaScript 中,异常应仅中止事件的执行上下文,而不是整个应用的执行上下文。
有没有办法防止这种行为?
防止此行为的最佳方法是处理异常。 全局异常处理程序通常不受欢迎,除了可能记录错误之外,因为它们不可能处理所有可能的异常,并且只会导致应用程序最终处于未知状态。
如果您无法在相关的地方以可靠的方式处理异常,则意味着您不知道问题是什么,并且由于未知状态,您的应用程序可能会以其他方式开始失败 - 此时它也可能完全停止运行。
综上所述,在 HTML 中,您可以从 onerror
处理程序return true
,而不是false
以防止异常进一步冒泡。 例如,这将在控制台中记录错误,但不显示未捕获的错误:
$('button').click(function() {
console.log('a');
throw "oops";
console.log('b');
});
window.onerror = function(e) {
console.log('error', e);
return true;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>
test
</button>
但这都会记录错误,然后显示未捕获的错误:
$('button').click(function() {
console.log('a');
throw "oops";
console.log('b');
});
window.onerror = function(e) {
console.log('error', e);
//don't return true
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>
test
</button>
您是否尝试过添加 catch 子句?这使您可以捕获错误而不会使应用程序崩溃。这将正确处理异常
相关文章:
- 如何从Node.js执行.exe文件
- 从服务器返回exe文件,并通过浏览器在客户端下载
- 未处理的 JavaScript 异常终止 MSAppHost/WWAHost.exe
- 从web应用程序运行.exe文件
- 量角器-通过量角器上传文件/运行exe
- 使用chrome在本地计算机中运行exe文件
- Firefox 扩展中的无窗口嵌入式 exe
- 将 xml(从 exe)呈现到新窗口
- 是否可以在客户端使用 silverlight c# 或 javascript 运行 exe 文件
- 使用 Node.js 执行 EXE 文件
- 加载 exe 文件并从网页设置变量
- 如何在没有用户批准的情况下使用 JS 从 Web 浏览器运行和安装 EXE 文件
- 如何将退出命令发送到当前的 ffmpeg.exe
- HTML to exe>阻止 Internet Explorer 对象中的 JavaScript 和 ActiveX 安
- 从浏览器执行.EXE文件
- WWAHost 不加载 XML DOM 文档 6.0
- 是否可以在 HTML 中的“onclick”上运行.exe或.bat文件
- 通过JQuery下载.EXE文件
- 如何使用 javascript 中的参数运行 cmd.exe
- 将javascript转换为exe时,尚未声明WScript