Error handling angular 5中的错误处理,从前端的后端api捕获错误
我需要在web应用程序前端处理错误的建议。 当我调用一个服务来根据web应用中的社区获取社区时,我希望它捕获一个错误。例如,捕捉404之类的错误 有一个服务,让社区根据提供的idError handling angular 5中的错误处理,从前端的后端api捕获错误,error-handling,angular5,web-frontend,Error Handling,Angular5,Web Frontend,我需要在web应用程序前端处理错误的建议。 当我调用一个服务来根据web应用中的社区获取社区时,我希望它捕获一个错误。例如,捕捉404之类的错误 有一个服务,让社区根据提供的id getCommunity(id: number) { return this.http.get(`${this.api}/communities/` + id + ``); } 在events.ts文件中调用 setCommunityBaseUrl() { this.lis
getCommunity(id: number) {
return this.http.get(`${this.api}/communities/` + id + ``);
}
在events.ts
文件中调用
setCommunityBaseUrl() {
this.listingService.getCommunity(environment.communityId).subscribe((data: any) => {
this.communityUrl = data.url + `/` + data.domain;
});
}
环境中提供了id
。假设总共有20个社区。当我提供id=1
时,将显示符合community=1
的事件
export const environment = {
production: ..,
version: 'v2',
apiUrl: '...',
organization: '...',
websiteTitle: '...',
communityId: 1,
googleMapsApiKey: '...'
};
问题是,当我提供id=null
时,所有社区事件都在发生|后端的所有事件列表都在发生
请帮助^^当您订阅时,请使用
观察者
模式订阅。那么你传入的第一个函数
.subscribe(() => {} );
当可观察的调用时激发。下一步(…)
然后,您可以提供另一个函数,该函数将在Observable
调用.error(…)
所以
this.http.get(…)
返回一个可观察的
,它将在http错误上触发.error(…)
我们还知道,this.http.get(…)
完成或“错误”,这不是一个无休止的错误(一个永远不会完成的错误)。所以你可以做出承诺,然后像承诺一样操纵它
async getMeSomething(...) {
try {
this.mydata = await this.http.get(...).toPromise();
}
catch(error) {
handleTheError(error)
}
}
但我真正建议的是用于后端,然后使用生成API客户机类,这样就不必手动编写客户机或调整客户机或处理错误捕获。我一直在使用它,它为我们节省了大量的时间,因为您使用的是“.subscribe”,您可以创建自己的错误处理程序,并直接在该方法上捕获这样的错误
这是一个关于如何使用的示例:
构造函数(
私人_SuiteAppiservice:SuiteAppise,
私人(testcaseService):testcaseService,,
公共设施:公共设施,
私有_notificationService:notificationService{}
errorHandler(错误:HttpErrorResponse){
返回ObservateThrowError(error.message | |“服务器错误”)
}
公共某物=“某物”;
从SuiteSubscriber获取测试用例(项目、构建编号、SuiteId){
此.\u SuiteAppiservice.GetTestResults(项目、构建编号、SuiteId)。订阅(
数据=>{
控制台日志(数据);
这是._testcaseService.ListOfTestcases=数据;
//获取数据的认证服务。
这是._notificationService.TestcasesLoaded();
},
错误=>{
//这里我们写som错误
归还这个东西;
}
);
}
非常感谢您提供这些有用的信息和答案。我会尝试选择你给前端部分,因为我对此负责。后端已经修复,它也是由其他人编写的。祝您有个美好的一天!构造函数中的服务是自写服务吗(不是内置服务)?另外,您的意思是Observable.throw(error.message | |“Server error”)
byobservableThrowError(error.message | |“Server error”)
?谢谢你事先的回答
async getMeSomething(...) {
try {
this.mydata = await this.http.get(...).toPromise();
}
catch(error) {
handleTheError(error)
}
}