我尝试用lodash的_.attempt()替换try catch块来清理服务器代码



let target = (_.attempt(fs.statSync( "path" ) ) );





当try / catch等效项不是时返回错误

我也尝试过使用异步版本,如果我使用_.attempt()错误,对我来说还不清楚,建议吗?

最佳答案

Lodash的_.attempt()希望将一个函数作为第一个参数调用,并将该函数的参数作为第二个参数调用:

let target = _.attempt(function(path) {
  fs.statSync(path);
}, "path");


或缩短版本建议jmmygoggle's comment

let target = _.attempt(fs.statSync, "path");


您传递的是fs.statSync("path")的结果,而不是要调用的方法,这将引发_.attempt()无法处理的错误。

08-28 08:48