How do you perform Error Handling for HttpClient ?
How do you perform Error Handling for HttpClient ?
Error handling for HttpClient in Angular is a critical aspect of developing a robust application. Angular provides several mechanisms to handle errors when making HTTP requests. Here's a comprehensive approach to managing errors with HttpClient:
catchError
and throwError
with RxJS OperatorsThe primary method for handling errors in Angular is by using the HttpClient
service in conjunction with RxJS operators like throwError
and catchError
. When an HTTP request is made and an error occurs, the error is wrapped in an HttpErrorResponse
object. This object can be caught and processed using the catchError
operator within the RxJS pipe
method.
Here's an example of how to use catchError
:
import { HttpClient, HttpErrorResponse } from '@angular/common/http';
import { throwError } from 'rxjs';
import { catchError } from 'rxjs/operators';
constructor(private http: HttpClient) {}
getData() {
return this.http.get('/api/data').pipe(
catchError((error: HttpErrorResponse) => {
// Handle the error here
// Can check the error status code and respond accordingly
return throwError(() => error); // Rethrow the error
})
);
}
HttpInterceptor
For global error handling, Angular provides the HttpInterceptor
interface, which allows you to intercept HTTP requests and responses and handle errors or modify the request/response globally. This is useful for handling common error scenarios across the entire application.
Here's a basic example of an interceptor that handles errors:
import { Injectable } from '@angular/core';
import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent, HttpErrorResponse } from '@angular/common/http';
import { Observable, throwError } from 'rxjs';
import { catchError } from 'rxjs/operators';
@Injectable()
export class ErrorInterceptor implements HttpInterceptor {
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle(request).pipe(
catchError((error: HttpErrorResponse) => {
// Global error handling logic
// Can log the error or display a notification
return throwError(() => error);
})
);
}
}
Errors can also be handled locally within components or services. This allows for more specific error ...
middle
Gợi ý câu hỏi phỏng vấn
Chưa có bình luận nào