如何防止错误处理程序中的抛出错误?

时间:2018-05-01 22:47:56

标签: angular typescript error-handling

目前,在我的一种服务方法中,我有类似的东西:

this.get(foo).catch((e) => this.errorHandler(e));

errorHandler的位置是:

errorHandler(error: HttpErrorResponse) {

    if (error.status === 422) {
      this.openSnackBar('Number already exists');
      return Observable.throw(error.message || 'Server Error');
    } else {
      return Observable.throw(error.message || 'Server Error');
    }
  }

虽然这很好用,但它会抛出错误,我可以在控制台窗口中看到它报告。我想知道我在一个用户友好的消息中处理错误的情况,比如上面的snackbar示例,我怎样才能防止它被抛出/显示在控制台窗口中?

我只想抓住错误,检查状态并返回带有用户友好消息的快餐栏。我注意到如果我删除上面的抛出,代码停止工作。

1 个答案:

答案 0 :(得分:3)

在您处理了例外情况后(例如,通过显示提醒,烤面包或其他内容),请返回Observable.empty()而不是Observable.throwObservable.empty是一个可观察到的"完成"立即,没有"接下来的任何价值观;这将正确停止您的可观察流。