我在这里有一个关于 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/