【问题标题】:Try-catch block on multiple independent statements多个独立语句上的 try-catch 块
【发布时间】:2018-07-10 10:35:33
【问题描述】:

这样,如果一个语句产生错误,我想保持执行流程。 我不想让 try catch 块和语句一样多。

这是一个例子:

try {
    a = results['a'].data();
    b = results['b'].data();
    c = results['c'].data();
    d = results['d'].data();

} catch (e) {

}

在这种情况下,数据将从字典中检索,因此每当未定义键时,调用 data() 都会产生异常。

捕获哪个语句产生了异常,或者在每个语句之后制作虚拟布尔值并在最后一个块中处理其余部分对我来说似乎是一个很大的负担。

使用 JavaScript 作为一种语言。

【问题讨论】:

    标签: javascript try-catch


    【解决方案1】:

    试试这个:

    ;(function(fu){
        a = fu(results,'a', null/*optional default value (for when is not exists)*/);
        b = fu(results,'b');
        c = fu(results,'c');
        d = fu(results,'d');
        //Other Codes...
    })(function (r, n, def){return ((r[n]||{}).data||function(){return def;})();});
    

    【讨论】:

      【解决方案2】:

      您应该编写一个包装函数来做到这一点。 例如,让我们将该函数命名为 getData。 你的代码应该是这样的:

      // Dummy data
      var results = {
          "a": {
              "data": function() {
                  return "Hello World";
              }
          }
      };
      
      a = getData(results['a'])
      b = getData(results['b'])
      c = getData(results['c'])
      d = getData(results['d'])
      
      
      function getData(result) {
          try {
              return result.data();
          } catch (e) {
      
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-03-15
        • 2011-01-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-26
        相关资源
        最近更新 更多