Я строю сервер ASP.NET Core API с клиентом Angular. Я хочу, чтобы клиент мог перехватить исключение, выданное сервером. Я использую перехватчик HTTP для обработки ошибок в Angular, но это возвращает:
500 Внутренняя ошибка сервера
на стороне клиента в HttpErrorResponse
.
Я хочу, чтобы он возвращал мое сообщение об исключении. Почему HttpErrorResponse
не ловит брошенный CustomException
?
import { Injectable } from "@angular/core"
import { of } from "rxjs";
import { tap} from "rxjs/operators";
import { ToastrService } from 'ngx-toastr';
import {
HttpEvent,
HttpInterceptor,
HttpHandler,
HttpRequest,
HttpResponse,
HttpErrorResponse
} from '@angular/common/http';
import { Observable, throwError } from 'rxjs';
import { retry, catchError } from 'rxjs/operators';
import 'rxjs/add/operator/catch';
import 'rxjs/add/observable/of';
import 'rxjs/add/observable/empty';
import 'rxjs/add/operator/retry';
@Injectable()
export class HttpConfigInterceptor implements HttpInterceptor {
intercept(request: HttpRequest<any>, next: HttpHandler):
Observable<HttpEvent<any>> {
return next.handle(request)
.catch((err: HttpErrorResponse) => {
if (err.error instanceof Error) {
console.error('An error occurred:', err.error.message);
}
else {
console.error(`Backend returned code ${err.status}, body
was: ${err.error}`);
}
return Observable.empty();
});
}