代码之家  ›  专栏  ›  技术社区  ›  Curcuma_

在多个独立语句上尝试catch块

  •  0
  • Curcuma_  · 技术社区  · 7 年前

    这样,如果一个语句生成了一个错误,我希望保持执行流。 我不想做像语句那样多的try-catch块。

    下面是一个例子:

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

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

    捕捉哪个语句生成异常,或者在每个语句之后进行伪布尔运算,并处理最后一个块中的其余语句,这对我来说是一个很大的负担。

    使用javascript作为语言。

    2 回复  |  直到 7 年前
        1
  •  1
  •   Hassan Sadeghi    7 年前

    试试这个:

    ;(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
  •  0
  •   Viperz0r    7 年前

    您应该编写一个包装函数来实现这一点。 例如,让我们命名函数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) {
    
        }
    }