如何捕捉蓝鸟的ENOENT?

时间:2016-08-22 21:31:36

标签: javascript node.js error-handling promise bluebird

由于fs.exists弃用,我喜欢在bluebird中捕获ENOENT。

例如:

.then(() => {
    return promisedFs.unlinkAsync(excelPath);
})
.catch(ENOENT ERROR, () => { //do something })
.catch(all other errors, () => {//do something})

1 个答案:

答案 0 :(得分:3)

来自the docs

  

过滤后的变体(就像其他非JS语言一样)   让你只处理特定的错误。

     

[...]

     

只检查属性的谓词函数有一个方便的速记。   代替谓词函数,您可以传递一个对象及其对象   将根据匹配的错误对象检查属性:

fs.readFileAsync(...)
.then(...)
.catch({code: 'ENOENT'}, function(e) {
    console.log("file not found: " + e.path);
});
     

对象谓词在上面的代码中传递给.catch   ({code: 'ENOENT'})是谓词函数的简写   function predicate(e) { return isObject(e) && e.code == 'ENOENT' },   I.E.使用松散的平等。