Angular - 何时处理Observable订阅中的错误

时间:2017-06-22 09:27:09

标签: javascript angular typescript error-handling

我发现自己正在处理使用最新Angular版本编写的主题代码并搜索网页,我发现大多数开发人员都没有处理subscription错误。

我的问题是:我何时必须处理Observable订阅中的错误?

没有错误处理:

    this.myService.observable$.subscribe(
        (data) => {
            // do stuff with data
        }
    );

有错误处理:

    this.myService.observable$.subscribe(
        (data) => {
            // do stuff with data
        },
        err => {
            // do stuff with error
        }
    );

我主要找到第一个版本,但是......

不是处理订阅错误的问题吗?

这是否会使代码不那么稳固,可测试且更容易失败?

2 个答案:

答案 0 :(得分:1)

处理错误以向用户提供反馈或退回默认行为的良好做法。

例如,如果您尝试联系REST服务并进行通信,则可能需要通知用户有关连接问题或加载缓存数据的信息。

或者,如果REST服务返回错误。例如,您的应用程序是一个预订应用程序,用户正在执行订单,但一旦他提交订单,就没有更多的库存商品。 REST服务返回和错误,您应该向用户显示没有更多项目。

此外,在角度风格指南中:

  

数据管理的细节,例如标头,HTTP方法,缓存,错误处理和重试逻辑,与组件和其他数据使用者无关。

这意味着您应该从服务中返回有意义的消息。

答案 1 :(得分:1)

为什么错误处理很重要click Me

现在让我们看看为什么在Observables中需要进行错误处理..

示例:

this.service.send(this.shareData).subscribe(() => {

      // Here you are sure that the send has shared the data sucessFully

    }, (error) => {

      /* Now If you want to handle errors Like Front End Errors and Log this
         In your backEnd DB So solve it and fix it */

      /* Example below check error type is It from frontEnd and log error through Api */

      if(error.type !== 'API') {
        this.logService.log({
          Level: 2,
          Message: 'Failed to setFromDB',
        });
      }
    });