- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
<!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)。有没有办法阻止这种行为?
我尝试添加一个窗口 onerror 处理程序,它不会阻止应用程序终止。
window.onerror = function(e) { return false; }
编辑这是一个基于 Cordova 的 Windows 10 移动项目,运行现有的 html5 应用程序。必须在每个事件处理程序周围添加 try catch 将是一项令人难以置信的工作量。
编辑在 JavaScript 中,异常应该仅中止事件的执行上下文,而不是整个应用程序。
最佳答案
Is there a way to prevent this behaviour?
防止此行为的最佳方法是处理异常。全局异常处理程序通常不受欢迎,除了可能记录错误之外,因为它们不可能处理所有可能的异常,并且只会导致应用程序最终处于未知状态。
如果您无法在相关的地方以可靠的方式处理异常,则意味着您不知道问题是什么,并且您的应用程序可能会由于未知状态而开始以其他方式失败 - 此时点它可能会完全停止运行。
<小时/>尽管如此,在 HTML 中,您可以从 onerror
处理程序返回 true
而不是 false
以防止异常进一步冒泡。例如,这将在控制台中记录错误,但不显示 Uncaught Error :
$('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>
但这都会记录错误,然后显示 Uncaught Error :
$('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>
关于javascript - 未处理的 JavaScript 异常终止 MSAppHost/WWAHost.exe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36916836/
Throw test CRASH 此代码作为通用 Windows 应用程序 (MSAppHost/3.0) (WWAHost.exe) 运行时会终止该应用
我是一名优秀的程序员,十分优秀!