Я хочу проверить тип класса ошибок, который исходит от перехватчика, выполняет throwError. (Тип класса ошибок означает, что класс реализует Error.)
Но, когда я поймал эту ошибку, она работает, несмотря на другую ошибкутип. (В этом случае я хочу проверить ошибку как MyCustomError1, но она работает, несмотря на MyCustomError2.)
Примечание: MyCutomError1 и MyCutomError2 реализуют один и тот же класс ошибок.
Итак, как я должен проверитьвведите соответственно?
Мой перехватчик здесь.
@Injectable()
export class ErrorInterceptor implements HttpInterceptor {
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
const _req = req.clone();
return next.handle(_req)
.pipe(
catchError((errRes: HttpErrorResponse) => {
let _error: Error = null;
switch (errRes.status) {
case 401:
_error = new MyCustomError1(errRes.name, errRes.message, errRes.error);
break;
case 503:
_error = new MyCustomError2(errRes.name, errRes.message, errRes.error);
default:
_error = errRes;
break;
}
return throwError(_error);
})
);
}
}
Затем я хочу уловить ошибку, такую как ниже.
Примечание: я буду использовать эту службу в моемкомпонент и обработать ошибку.
this.myService.doSomething()
.pipe(
catchError((err: Error) => {
// How should I check the type?
// In the case of MyCustomError2, this returns true.
if(err instanceof MyCustomError1){
// error handling
}
return EMPTY;
})
).subscribe(()=>{})