我发现自己正在处理使用最新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
}
);
我主要找到第一个版本,但是......
不是处理订阅错误的问题吗?
这是否会使代码不那么稳固,可测试且更容易失败?
答案 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',
});
}
});