Error handling angular 5中的错误处理,从前端的后端api捕获错误

Error 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

我需要在web应用程序前端处理错误的建议。 当我调用一个服务来根据web应用中的社区获取社区时,我希望它捕获一个错误。例如,捕捉404之类的错误

有一个服务,让社区根据提供的id

 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”)
by
observableThrowError(error.message | |“Server error”)
?谢谢你事先的回答
async getMeSomething(...) { 
   try {
     this.mydata = await this.http.get(...).toPromise();
   }
   catch(error) { 
     handleTheError(error) 
   }
}