【发布时间】:2011-04-10 18:00:48
【问题描述】:
不确定表达问题的最佳方式,但假设您使用 jQuery 来设置各种类似的东西:
<script>
function doSecond(){
alert("Hi");
}
function dofirst(){
var x = asdasd;
}
$(dofirst);
$(doSecond);
</script>
所以,假设 dofirst 和 dosecond 是完全独立的。如果 dofirst 抛出异常,当然它会抛出异常,那么 doSecond 将永远不会触发。我理解为什么会发生这种情况,但我想知道是否有一种方法可以解决这个问题,而不必包装我想要设置的 EVERY 类型的 jQuery 处理程序试一试。例如,我宁愿不这样做:
try{
$(doFirst);
}
catch{
//maybe log here?
}
try{
$(doSecond);
}
catch{
//maybe log here?
}
现在,如果您想知道我为什么要这样做?好吧,以您现在正在查看的页面上的代码为例:
<script type="text/javascript">
$(function() {
$('#title').focus(function() { $('#how-to-tag').hide(); $('#how-to-format').hide(); $('#how-to-title').fadeIn('slow'); });
$('#wmd-input').focus(function() { $('#how-to-tag').hide(); $('#how-to-format').fadeIn('slow'); $('#how-to-title').hide(); });
$('#tagnames').focus(function() { $('#how-to-tag').fadeIn('slow'); $('#how-to-format').hide(); $('#how-to-title').hide(); });
});
</script>
当你点击某些 dom 元素时,真的有必要吗?不,但是如果你在那个函数中犯了一个错误,那么很可能你真正需要运行的其他 javascript 可能永远无法设置。
【问题讨论】:
-
最好的方法是让你的代码不抛出异常。页面错误应始终被视为错误并予以修复。
-
所以最好的解决办法是不犯错? +1 :)
标签: javascript jquery error-handling