在异步函数上将catch异常重新抛出到上层

时间:2017-08-24 18:09:50

标签: javascript ecmascript-2017

在异步函数中将错误抛出到上一级

async create(body: NewDevice, firstTry = true): Promise<RepresentationalDevice> {
  try {
    return await this.dataAccess.getAccessToken()
  } catch (error) {
    throw error
  }
}

VS这个

async create(body: NewDevice, firstTry = true): Promise<RepresentationalDevice> {
  return await this.dataAccess.getAccessToken()
}

我的意思是在最高层的末尾,我必须抓住错误,并且根本没有任何修改

这两种方法是否相同?我可以使用第二种方法而不会出现错误处理问题吗?

1 个答案:

答案 0 :(得分:0)

这与异步功能无关。仅仅为了重新抛出它而捕获错误就像首先没有捕获它一样。即。

try {
  foo();
} catch(e) {
  throw e;
}

foo();

基本上是等效的,除了堆栈跟踪可能不同(因为在第一种情况下,错误被抛出在不同的位置)。