3

困惑するコードがいくつかあります。私はオンラインで検索しましたが、このようなものは見つかりませんでしたが、私が最初だとは思っていません =) 私は道場を使用していますが、それが問題と関係があるかどうかはわかりませんしています。問題は、Firebug がスローしたいエラーをスローしないことです。ただし、Safariでデバッグすると、エラーがスローされます??? 私はいつもこの種のことをしていますが、何らかの理由でここではうまくいきません。

コードサンプルは次のとおりです。

var formSubmit = function(e) {
    e.preventDefault();

    var f = testForm.domNode,
        map = {};
    for(var i = 0; i < f.elements.length; i++){
        var elem = f.elements[i];
        map[elem.id] = elem.value;
    }


    if (!map.id && !map.field1) {
        ***// -- this error will not be thrown --***
        throw new Error("you must supply some data"); 
    }
}



testForm = new Form({
    encType: "multipart/form-data",
    method: "post",
    onSubmit: formSubmit
}, "testForm");

これが Firebug で機能しない理由について、何か考えがある人はいますか?

4

1 に答える 1

7

エラーはおそらくスローされますが、エラーをスローする関数はイベントハンドラーから呼び出されているため、エラーはシステムイベント処理コードで発生し、そこでキャッチされる (コードでキャッチされない) か、単に無視されます。

「投げられない」と言うとき、あなたは何を期待していましたか? try/catch例外をキャッチすることを期待していた場所はありましたか? 例外のスローには、独自の汎用 UI はありません。例外をスローし、例外をキャッチして何かを行うのは、より高いレベルのコード次第です。そのイベント ループに例外をキャッチする上位レベルのコードがない場合は、そのイベント ハンドラーの実行を中止するだけです。

于 2012-04-06T19:39:52.893 に答える