3

我有一些代码让我感到困惑。我在网上搜索过,但我找不到这样的东西,虽然我不认为我是第一个 =) 我正在使用 dojo,我不知道这是否与我的问题有关有。问题是 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 回答