Javascript不会抛出新的错误

时间:2012-04-06 19:33:37

标签: javascript error-handling dojo

我有一些令我感到困惑的代码。我在网上搜索过,我找不到这样的东西,虽然我不认为我是第一个=)我正在使用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中不起作用?

1 个答案:

答案 0 :(得分:7)

可能抛出错误,但是从事件处理程序调用抛出错误的函数,因此错误最终会在系统事件处理代码中被捕获(在代码中未捕获)或者只是获取忽略。

当你说“它没有被抛出”时,你期待看到什么?你有一个try/catch某个地方,你期望抓住这个例外吗?抛出异常没有任何自己的通用UI。它会引发异常,然后由一些更高级别的代码来捕获异常并对其执行某些操作。如果该事件循环中没有更高级别的代码来捕获异常,那么它只是中止该事件处理程序的执行。