【问题标题】:How to handle exception uniformly / globally for Angular2 / Typescript observables?如何为Angular2 / Typescript observables统一/全局处理异常?
【发布时间】:2016-10-26 08:07:58
【问题描述】:

在 Angular2 的整个教程中,我看到异常正在被调用的地方捕获,例如:

getHeroes(): Promise<Hero[]> {
    return this.http.get(this.heroesUrl)
               .toPromise()
               .then(response => response.json().data as Hero[])
               .catch(this.handleError);
  }

虽然这可能对本教程有好处,但对我来说这听起来并不可持续。我想要一些全局处理程序,例如向用户覆盖/弹出一些消息并将错误记录到控制台+当我需要一些特殊处理时覆盖它(例如,如果我阅读了 json 错误并发现我可以以比仅弹出一个更用户友好的方式处理它组件之一),而无需像 Angular2 中的示例所建议的那样在任何地方覆盖它。

有可能实现吗?

附:例如,C# 类似物是一些 global.asax Application_Error + TaskScheduler.UnobservedTaskException 错误处理。

【问题讨论】:

    标签: angular typescript rxjs observable rxjs5


    【解决方案1】:

    你不可能让所有的 Observable 都做一些全局预定义的行为。

    由于您可能希望以某种统一的方式处理来自http 的大部分请求,您可以将默认的http 服务替换为您自己的扩展方法,例如get()post(),并始终附加catch()retryWhen() 运营商。见:

    【讨论】:

      【解决方案2】:

      问题是,我不认为 http 抛出异常,不是通常意义上的。它在收到 HTTP 错误代码时调用 catch 委托。

      通过阅读,您可以使用 ErrorHandler 在 C# 中捕获全局抛出的错误,但在您的承诺中,您仍然必须像在 example 中那样抛出它

      【讨论】:

        猜你喜欢
        • 2016-11-03
        • 2021-08-19
        • 1970-01-01
        • 2015-12-21
        • 2011-09-29
        • 2011-06-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多