在没有很多try catch语句的情况下继续javascript执行错误

时间:2013-04-12 06:51:33

标签: javascript exception

让我们说,我在一个块中有50行javascript语句。有没有一种方法,如果任何一行出错,脚本继续运行,而不是为每一行使用大量的try catch块?

2 个答案:

答案 0 :(得分:1)

试试这个:

   1:  <head>
   2:  <script language="javascript">
   3:  function stoperror()
   4:  {
   5:  return true
   6:  }
   7:  window.onerror=stoperror();
   8:  </script>
   9:  </head> 

答案 1 :(得分:1)

你的问题有点可疑。如果你在一个块中有50个语句允许独立失败,那么我认为这些语句之间没有关系。 在这个例子中

var a = 1;
var b = a + 2;

b变量依赖于a的结果。如果不是这种情况,我认为,这些语句放在一个块中的唯一原因是它们必须同时执行。在这种情况下,我还假设这些语句更像是带有副作用的函数,比如C#-void函数或Actions。你并不真正关心表达的结果......

你需要将每个表达式放在try- [catch |最后]阻止,我别无选择。为了减少冗长,您可以执行以下操作:

var tryF = function() {

    // convert arguments to normal array
    var args = [].slice.call(arguments, 0, arguments.length);

    // if has function to execute
    if(args.length > 0)
    {
      var func = args[0];//alert(func);
        try {func();}
        finally {

            // if has next function to execute
            if(args.length>1) {
             tryF.apply(null, args.slice(1, args.length));
            }
        }
    }
}
// usage
{
    // first function has a error, it won't block the next 
    tryF(function() { aslert(1); }, function() { alert(1); });
}