在lambda/箭头函数中不使用花括号抛出错误

3
假设我想在Node.js中使用promise时转换错误。例如,在下面的代码中,我正在尝试在使用request-promise模块进行某个URI的GET操作时修改错误以便更简单地处理。
const options = {
  'uri': uri,
  'headers': { 'Accept-Charset': 'utf-8' }
}

rp.get(options)
  .catch(err => {
    throw {'statusCode': err.statusCode ? err.statusCode : 503}
  })

我是否可以像使用 return 一样省略花括号?

1个回答

1

throw是一个语句,因此您不能在需要表达式的地方使用它。没有花括号的箭头函数版本期望一个表达式。您可以返回一个被拒绝的Promise而不是抛出异常:

rp.get(options)
  .catch(err => Promise.reject({'statusCode': err.statusCode ? err.statusCode : 503}));

2
是的,我知道这个,但我不确定哪一个更好。 - chriptus13
1
@chriptus13 它们是一样的。在 Promise 回调函数中抛出的异常会使用完全相同的方法转换为一个拒绝的 Promise。我更喜欢 throw 的语法,但不适用于单行代码。 - Paul

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接