处理错误的最佳方法之一是使用
Interceptor
. 最好的是,您可以在所有API的顶层处理错误。所以需要编写相同的重复代码来处理http错误。
http协议-错误.interceptor.ts
import { HttpEvent,
HttpInterceptor,
HttpHandler,
HttpRequest,
HttpResponse,
HttpErrorResponse} from '@angular/common/http';
import { Observable, throwError } from 'rxjs';
import { catchError } from 'rxjs/operators';
export class HttpErrorInterceptor implements HttpInterceptor {
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>>{
return next.handle(request)
.pipe(
catchError( (error: HttpErrorResponse) => {
let errMsg = '';
if (error.error instanceof ErrorEvent) {
errMsg = `Error: ${error.error.message}`;
}
else {
errMsg = `Error Code: ${error.status}, Message: ${error.message}`;
}
return throwError(errMsg);
})
)
}
}
应用程序模块.ts
@NgModule({
imports: [...],
declarations: [...],
bootstrap: [....],
providers: [
{
provide: HTTP_INTERCEPTORS,
useClass: HttpErrorInterceptor,
multi: true,
},
CustomerService,...]
})