多个独立语句上的try-catch块

时间:2018-07-10 10:35:33

标签: javascript try-catch

例如,如果一条语句产生错误,我希望保持执行流程。 我不想像语句那样制作很多try catch块。

这是一个示例:

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

} catch (e) {

}

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

赶上哪个语句会产生异常,或者在每个语句之后添加虚拟布尔值,然后在最后一个块中处理其余的语句,这对我来说是一个很大的负担。

使用JavaScript作为语言。

2 个答案:

答案 0 :(得分: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;})();});

答案 1 :(得分:0)

您应该编写一个包装函数来执行此操作。 例如,让该函数命名为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) {

    }
}