Я использую Angular 7, где я пытаюсь отловить выданную ошибку, потому что значение, возвращаемое внешним API, имело нулевые значения там, где я ожидал значений.
Я не могу понять, что я должен делать в этом сценарии.
У меня есть служба, которая вызывает API.
getObjectValue(param: paramtype): Observable<ObjectValue> {
return this.http.get<objectwithvalues>(environment.baseapiurl + '/api/object/value/'+ param);
}
В потребляющем компоненте я подписываюсь как обычно
testfunction() {
this.service.getObjectValue().Subscribe(v => {
*DO STUFF*
*Error happens* v['o'] // oh no v is null
},
error=>{
console.log('error')
this.snackbar.open('this went wrong' + error);
}
);
}
Это основной случай.Это не вызывает 'error => {}' Angular просто выплевывает сообщение об ошибке.
Итак, я попробовал попробовать / поймать в рамках обратного вызова подписки.Не перехватил.
В настоящее время я пытаюсь изменить код услуги на следующий
getObjectValue(param: paramclass): Observable<ObjectValue> {
return this.http.get<EventWifi>(
environment.baseapiurl + '/api/object/value/'+ param).pipe(map(v=> {
if(v === null){
return throwError('v is null');
}
}),
catchError(err => this.errorTest(err))
);
}
this.errorTest(err: any): Observable<any> {
return throwError(err);
}
При выполнении того же самого в подписчике, но ошибка не обнаруживается функцией ошибки подпискипоэтому я не могу обработать ошибку соответствующим образом.
С последней показанной сервисной функцией не возникает никаких ошибок.
Я пробовал так много небольших различий в конфигурации, которые я едва могу вспомнить на данный момент, поэтому, должно быть, есть кое-что, о чем я ошибаюсь.
Я посмотрел так много примеров, но ни один из них не срабатывает и не работает в моем случае.