0

現在、私はモジュールビルダーを持っています。この要約版のスクリプトでは、ボディ クリックが発生foo()し、エラーがスローされます。モジュールオブジェクト全体にエラーハンドラーをアタッチして、作成中だけでなく実行時にもスローされたものをキャッチしたいと考えています。出来ますか?

現在、「foo アラート」がコンソールに表示されます。私はそれを抑制し、中央のロガーに必要なログをさせたいと思います。この場合、代わりに「logged」を表示したい。

$(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

それが必要な場合は、コード実行の各レベルでtryandを追加する必要があります。catch

つまり、「定義」時、コンストラクター (存在する場合)、各メソッド本体、および各イベント ハンドラー内です。

また、おそらくそれは単なるサンプルコードですが、これは次のとおりです。

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

単にこれである可能性があります:

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