0

目前我有一个模块构建器。在此脚本的精简版本中,会触发正文单击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()

});​
4

1 回答 1

1

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

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

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

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

可能只是这样:

$('body').on('click',foo);
于 2012-04-07T07:29:12.050 回答