Javascript不会抛出新的错误

mik*_*ike 2 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");
Run Code Online (Sandbox Code Playgroud)

任何人都有任何想法,为什么这在Firebug中不起作用?

jfr*_*d00 7

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

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