使用try / catch而不是使用XHR请求的`.catch`可观察运算符会降低性能吗?

时间:2017-10-20 14:35:36

标签: javascript ajax angular typescript

我有一个假设的问题,很好 - 我被要求加入一个新项目,我正在查看代码。这是您希望在Angular项目中看到的常见类型,但在服务文件中,所有HTTP请求都包含在JavaScript try / catch中,而不是使用.catch可观察运算符来处理错误。我之前从未见过这个,并建议使用内置的.catch可观察运算符。我发现的代码示例如下(注意语言是TypeScript)。

public getSomething(id: string): Observable<any> {
    try {
      return this.http.get('someurl/someparam')
        .map((res) => res.json().data);
    } catch (e) {
      throw new Error('Error with getSomething()');
    }
  }

我的建议遇到阻力,我被告知它对性能(内存和网络)没有任何影响。如果是这种情况,我提出了一个参数,即try / catch没有从HTTP请求返回真正的错误。所以我的问题是,尽管这被认为是一种反模式(或不是反模式),但try / catch围绕http.get包围会降低性能吗?我也假设try / catch与同步非异步代码一起使用 - 再一次是我的假设。

如果这是一个糟糕的非特定问题,请说明,我会删除。但我希望其他开发者对此持有意见。

1 个答案:

答案 0 :(得分:0)

  

我被告知它对性能(内存和网络)没有任何影响

这可能是,但它根本不重要。

更改会对正确性产生重大影响:try / catch处理同步异常,而.catch()处理来自observable的错误 - 包括异步错误。