Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript不会抛出新错误_Javascript_Error Handling_Dojo - Fatal编程技术网

Javascript不会抛出新错误

Javascript不会抛出新错误,javascript,error-handling,dojo,Javascript,Error Handling,Dojo,我有一些让我困惑的代码。我在网上搜索过,但找不到类似的东西,尽管我不认为我是第一个=)我在使用dojo,我不知道这是否与我遇到的问题有关。问题是Firebug不会抛出我希望它抛出的错误。但是,在Safari中调试时,会抛出错误???我一直在做这类事情,但由于某种原因,它在这里行不通 以下是代码示例: var formSubmit = function(e) { e.preventDefault(); var f = testForm.domNode, map =

我有一些让我困惑的代码。我在网上搜索过,但找不到类似的东西,尽管我不认为我是第一个=)我在使用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");
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()
为它编写的。结果是没有!现在我的错误记录正确:)