我有一个Javascript函数,如果出现问题会引发异常。我习惯了这种行为,总有一天花了20多分钟才找到代码中的错误,因为函数没有抛出异常,它只是失败了。通过jQuery Ajax加载的Javascript不会在Firebug中引发预期的异常
使用Firebug插件在Firefox中试试以下代码。 与函数创建一个HTML页面:
function myfunc(key)
{
alert('I started');
if(!key)
throw 'myfunc: Invalid arguments';
}
然后用代码创建第二个HTML页面:
<script type="text/javascript">
myfunc(null);
alert('Exception was before me!');
</script>
和使用jQuery $就功能的第一个页面加载第二个HTML页面。
代码将正确执行,但您将看不到在Firebug控制台中记录的异常。
如果右侧FRST HTML页面上运行相同的功能MYFUNC(空),你会本身iimediately在Firebug红线说:
uncaught exception: myfunc: Invalid arguments
但并没有什么退出,如果它被执行jQuery(我猜,jQuery使用eval在$ .ajax之后运行 脚本)。
这是否意味着jQuery本身捕捉异常并在评估Javascript时忽略它们?有什么方法可以告诉jQuery让我的异常通过吗?
我只是想让jQuery重新抛出'myfunc:Invalid arguments'异常,但它不会发生。如果我从第一个html页面右键运行myfunc(null),Firebug会显示一条红线:“未捕获的异常:myfunc:无效的参数”,我知道发生了什么。但是,如果它发生在AJAX脚本中,异常消失。 – JustAMartin