我有一个假设的问题,很好 - 我被要求加入一个新项目,我正在查看代码。这是您希望在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
与同步非异步代码一起使用 - 再一次是我的假设。
如果这是一个糟糕的非特定问题,请说明,我会删除。但我希望其他开发者对此持有意见。
答案 0 :(得分:0)
我被告知它对性能(内存和网络)没有任何影响
这可能是,但它根本不重要。
更改会对正确性产生重大影响:try
/ catch
处理同步异常,而.catch()
处理来自observable的错误 - 包括异步错误。