目前,在我的一种服务方法中,我有类似的东西:
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示例,我怎样才能防止它被抛出/显示在控制台窗口中?
我只想抓住错误,检查状态并返回带有用户友好消息的快餐栏。我注意到如果我删除上面的抛出,代码停止工作。
答案 0 :(得分:3)
在您处理了例外情况后(例如,通过显示提醒,烤面包或其他内容),请返回Observable.empty()
而不是Observable.throw
。
Observable.empty
是一个可观察到的"完成"立即,没有"接下来的任何价值观;这将正确停止您的可观察流。