从JS中的对象捕获错误

时间:2012-04-07 07:21:25

标签: javascript error-handling

目前我有一个模块构建器。在此脚本的精简版本中,正文单击会触发foo(),从而引发错误。我想将一个错误处理程序附加到整个模块对象,以捕获从其中抛出的任何内容,不仅在创建期间,而且在运行时。有可能吗?

目前,“foo alert”出现在控制台中。我想压制它,让中央记录器做必要的日志。在这种情况下,我希望看到“已登录”。

$(function() {

    var moduleCollection = {};

    //creates modules, stores them and returns for reference
    function define(name, def) {
        var newModule = def();              //creates the module object
        moduleCollection[name] = newModule; //store

        //somewhere here, i must attach some sort of
        //error handlers for the module
        //something like:
        newModule.onerror = function(){
            //execute error procedure (like logging)
            console.log('logged');
        }

        return newModule //return as reference
    }

    //a module definition
    var mymod = define('mymod', function() {
        //foo chokes unintentionally and results into an error
        function foo() {throw new Error('foo alert');}

        function start() {
            //a body click calls foo
            $('body').on('click', function() {foo()});
        }
        return {start: start}
    });

    //start module
    mymod.start()

});​

1 个答案:

答案 0 :(得分:1)

如果您需要,则需要在每个代码执行级别添加trycatch

也就是说,在“定义”时,在构造函数(如果存在),每个方法体和每个事件处理程序中。

另外,也许这只是你的示例代码,但是这个:

$('body').on('click', function() {foo()});

可能就是这样:

$('body').on('click',foo);