我有一些令我感到困惑的代码。我在网上搜索过,我找不到这样的东西,虽然我不认为我是第一个=)我正在使用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中不起作用?
答案 0 :(得分:7)
可能抛出错误,但是从事件处理程序调用抛出错误的函数,因此错误最终会在系统事件处理代码中被捕获(在代码中未捕获)或者只是获取忽略。
当你说“它没有被抛出”时,你期待看到什么?你有一个try/catch
某个地方,你期望抓住这个例外吗?抛出异常没有任何自己的通用UI。它会引发异常,然后由一些更高级别的代码来捕获异常并对其执行某些操作。如果该事件循环中没有更高级别的代码来捕获异常,那么它只是中止该事件处理程序的执行。