Javascript 使用严格错误未捕获

标签 javascript backbone.js error-handling try-catch use-strict

我正在为 AMD 创建一个使用 require.js 的 backbone.js 应用程序。为了检查浏览器对 use strict 的支持,我添加了以下代码。然而,当代码运行时,var o = {p:1, P:2} 抛出的错误并没有像我预期的那样被捕获,而是杀死了整个页面。

Chrome 控制台打印此错误:Uncaught SyntaxError: Duplicate data property in object literal not allowed in strict mode

require([
    'jquery',
    'underscore',
    'backbone',
    'src/app'
], function(jQuery, _, Backbone, App){
    "use strict"

    var tooOld = true,
    isStrictMode = function () {
        try{
            var o = {p:1, p:2};
        } catch (e) {
            tooOld = false;
            new App;
        } finally {
            if (tooOld) {
                // Display some message
            }
        }
    }();
});

为什么错误导致我的页面崩溃而不是被捕获?我该如何解决这个问题?

最佳答案

如果要检查严格模式支持,请考虑:

function supportsStrict() {
  'use strict';
  return typeof function(){return this;}() == 'undefined';
}

console.log(supportsStrict()); // true if supports strict mode

这样您就可以独立测试并根据结果运行不同的代码分支。

关于Javascript 使用严格错误未捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25479453/

相关文章:

javascript - Rails服务器返回500内部服务器错误,但仍发布到数据库

javascript - 切换所有情况

javascript - 如何使用 Javascript 按每日日期随机化字符串

javascript - Backbone.js 可以在集合的添加处理程序中调用 View 上的方法吗?

asp.net-mvc-3 - MVC覆盖OnException错误: No suitable method found to override

javascript - 客户端验证安全问题

javascript - backbone.js如何判断是否在服务器上?

javascript - 将三元运算符转换为传统 if 语句时 undefined variable

sql-server - 使用T-SQL,如何捕获操作系统错误代码?

python - 使用 Tkinter 的“pip install Module”程序