我正在从事Angular项目,对它来说还很新。我想知道的是,处理错误并将错误报告给用户的最佳实践是什么。我已经在Google周围搜索了一下,但没有找到很多确定的信息,所以也许值得商??
无论如何,我有返回观察值的服务,并且组件订阅了这些服务方法。对于直接可观察到的,pipe
运算符有一个catchError
处理程序可以捕获错误,但是subscribe
也有一个错误处理程序。那我该用哪个呢?还是两者都有?
最好有一个只返回可观察到的非管道服务的服务(除非我需要管道来映射或其他东西),然后让订阅处理组件上的错误,还是应该在管道中捕获错误?而不是订阅级别?
第一个看起来像这样:
服务返回可见
GetUserById(id: string): Observable<User> {
return this.http.get<User>(ApiData.baseUrl + `/user/${id}`);
}
组件中的订阅
this.userService.GetUsers().subscribe(
users => *do whatever with it*,
error => this.handleError<User>('Get User by Id', null)
);
第二个是这样的:
服务返回可见
GetUserById(id: string): Observable<User> {
return this.http.get<User>(ApiData.baseUrl + `/user/${id}`).pipe(
catchError(this.handleError<User>('Get User by Id', null))
);
}
组件中的订阅
this.userService.GetUsers().subscribe(users => *do whatever with it*);
引用的“ HandleError”方法当前仅登录到控制台,并向用户显示错误通知。
这些针对Angular的反模式之一吗?是否有最佳方法达成共识?