如何捕捉蓝鸟ENOENT?
因为fs.exists的弃用,我喜欢用蓝鸟捕捉ENOENT。
举个例子:
.then(() => { return promisedFs.unlinkAsync(excelPath); }) .catch(ENOENT ERROR, () => { //do something }) .catch(all other errors, () => {//do something})
从文档 :
一个被过滤的变体(像其他非JS语言一样)通常只能处理特定的错误。
[…]
只检查属性的谓词函数有一个方便的速记。 代替一个谓词函数,你可以传递一个对象,并且它的属性将被检查一个匹配的错误对象:
fs.readFileAsync(...) .then(...) .catch({code: 'ENOENT'}, function(e) { console.log("file not found: " + e.path); });
在上面的代码(
{code: 'ENOENT'}
)中传递给.catch
的对象谓词是谓词函数function predicate(e) { return isObject(e) && e.code == 'ENOENT' }
,IE平等使用。