javascript - Angular 2+ http 错误处理

标签 javascript angular rxjs angular2-http

我在这里有一个关于 Angular2+ Observable 如何处理 Http 错误的问题。 当我们使用Angular2+ Http API发出请求时,如果返回的响应有错误状态码,则会抛出错误。

在Angular2官方Starter项目中,要调用的错误处理函数是:

someObs.catch(handler)

在处理程序中,它实际上返回:

Observable.throw(...)

我的问题是,这不会引发可能导致网络应用程序崩溃的新错误吗?因为在 Javascript 中,如果抛出一些错误,网络应用程序可能会出现意外的行为。

我对 Observable.catch 的理解是,当发生某些错误时,我们捕获它并做其他事情(而不是抛出新错误)。 自从

Observable.catch

仍然需要我们返回一个Observable,返回是否是最好的解决方案:

Observable.empty()

因为它不会发出任何新值,因此订阅者不会使用react

最佳答案

如果您能够在catch中处理特定错误,则可以返回一个用于继续可观察链的可观察量。返回 Observable.empty() 可能有意义 - 取决于具体情况。

如果您无法处理捕获的错误并返回 Observable.empty,那么您就已经吞掉了该错误 - 一般来说,这不是一个好主意(特别是如果 catch 处理程序不包括某种报告机制)。相反,重新抛出错误 - 或返回 Observable.throw - 为订阅者提供了处理或报告错误的机会。

如果订阅者不处理错误,则发生的情况取决于运行时。在浏览器中,应用程序不会因为错误未被处理而崩溃;它只会被报告为未处理的错误 - 与未处理的 promise 拒绝或未捕获的抛出错误非常相似。在 Node 中,默认情况下它会快速失败/崩溃。

关于javascript - Angular 2+ http 错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45047223/

相关文章:

javascript - 在 VS 中调试 JavaScript

javascript - 类型错误 : 'undefined' is not an object

css - Angular 2 从styles.scss 扩展样式

html - Angular 2上传多个文件

javascript - RxJS,为什么 fromEvent() 会为每个订阅注册一个新事件?

javascript - 对类数组对象进行排序 Angular

javascript - 组件未呈现

javascript - Angular2 应用程序中的 Deezer API

RxJS:Observables 之间可重复的竞争

angular - 如何正确链接 rxjs 6 observables?