Javascript不会抛出新错误
我有一些让我困惑的代码。我在网上搜索过,但找不到类似的东西,尽管我不认为我是第一个=)我在使用dojo,我不知道这是否与我遇到的问题有关。问题是Firebug不会抛出我希望它抛出的错误。但是,在Safari中调试时,会抛出错误???我一直在做这类事情,但由于某种原因,它在这里行不通 以下是代码示例:Javascript不会抛出新错误,javascript,error-handling,dojo,Javascript,Error Handling,Dojo,我有一些让我困惑的代码。我在网上搜索过,但找不到类似的东西,尽管我不认为我是第一个=)我在使用dojo,我不知道这是否与我遇到的问题有关。问题是Firebug不会抛出我希望它抛出的错误。但是,在Safari中调试时,会抛出错误???我一直在做这类事情,但由于某种原因,它在这里行不通 以下是代码示例: var formSubmit = function(e) { e.preventDefault(); var f = testForm.domNode, map =
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");
var formSubmit=函数(e){
e、 预防默认值();
var f=testForm.domNode,
map={};
对于(var i=0;i
有人知道为什么这在Firebug中不起作用吗?可能会抛出错误,但抛出错误的函数是从事件处理程序调用的,因此错误最终会出现在系统事件处理代码中,或者被捕获(而不是被代码捕获),或者被忽略
当你说“它没有被扔”时,你期待看到什么?您是否有一个
try/catch
您希望捕获异常的地方?引发异常本身没有任何通用UI。它抛出异常,然后由更高级别的代码捕获异常并对其进行处理。如果在该事件循环中没有更高级别的代码来捕获异常,那么它只是中止该事件处理程序的执行。如果没有抛出,那么它[很可能]没有到达。formSubmit
函数是否正在执行?@Ryan如果它是一个一致的JavaScript引擎(我猜它可能会被愚蠢的代码隐藏到另一个值,但是……)大家好。谢谢你们的输入。我比你们知道的还要感谢。代码正在if语句中执行。我可以在其中放入一个console.log语句,它将在firebug中输出,但不会显示错误。此外,Safari调试工具中完全相同的代码将显示错误…这是我最困惑的地方。我看到了w你在说什么。我漏掉的一大条信息是代码正在被停止。它只是没有在firebug中显示错误。我想你说的一定是发生了,但仍然不明白为什么错误会显示在Safari中?那么我怎么才能在firebug中显示这种类型的错误呢?它在我的代码的其他部分中工作,a当我使用jQuery时,我从未遇到过这个问题(不是说我不喜欢使用dojo,因为我真的很喜欢这个框架)。如果我使用try/catch,这是否是一致显示错误的更好方法?您希望该行为是什么?是否要向用户显示错误消息?throw不用于向用户显示错误。如果是,请不要使用throw
,使用alert
。每个浏览器都可以配置为如何处理uncaught异常-这是一个最终用户设置,不是您应该在代码中使用或依赖的内容。如果您抛出异常并希望停止JS执行线程以外的任何内容,您应该在其他地方捕获它。如果您想向用户显示消息,请不要使用throw
。使用类似ale的内容rt(msg)
。谢谢,你的评论让我重新检查我的承诺是否有一个catch()
为它编写的。结果是没有!现在我的错误记录正确:)