Angular 角度HttpClient Errorhandler最佳方法

Angular 角度HttpClient Errorhandler最佳方法,angular,Angular,处理错误的最好方法是什么 在HttpClient中 这是个好办法吗 我的目标是避免设置相同的设置 方法在所有服务中反复使用 export class HttpErrorHandler { static handleError(error: HttpErrorResponse) { let errorMessage = ''; if (error.error instanceof ErrorEvent) { errorMessage = error.error.m

处理错误的最好方法是什么 在HttpClient中

这是个好办法吗

我的目标是避免设置相同的设置 方法在所有服务中反复使用

export class HttpErrorHandler {
  static handleError(error: HttpErrorResponse) {
    let errorMessage = '';
    if (error.error instanceof ErrorEvent) {
      errorMessage =  error.error.message;
    } else {
      const errorMessage = `Server returned code: ${error.status}, error message is: ${error.error}`;
    }
    const msg = environment.production ? 'Something bad happened; please try again later.' : errorMessage;
    return throwError(msg);
  }
}
或者由一个像

@Injectable()
export class ErrorsHandler implements ErrorHandler {
  handleError(error: Error | HttpErrorResponse) {   
   if (error instanceof HttpErrorResponse) {
      // Server or connection error happened
      if (!navigator.onLine) {
        // Handle offline error
      } else {
        // Handle Http Error (error.status === 403, 404...)
      }
   } else {
     // Handle Client Error (Angular Error, ReferenceError...)     
   }
  // Log the error anyway
  console.error('It happens: ', error);
}

试试这个…这是根据您的需求处理错误的最好方法。只需要在服务类中创建一个方法,如下所示

 public errorHandler(err: HttpErrorResponse) : Observable<any>
  {
    if (err.error instanceof Error)
    {
      console.error("Client-side error occured.",err.status,err.error.message);
      console.error(JSON.stringify(err.error));
    }
    else 
    {
      console.error("Server-side error occured.",err.status,err.error.message);
      console.error(JSON.stringify(err.error));   
    }

    return ErrorObservable.throw(err || 'ERROR');
  }

。在这种情况下,您不必为每个rest调用创建errorHandler。。您只需订阅它并对特定的HttpError执行操作即可。

这些问题更适合您
     .subscribe(
        res => {
               console.log(res) ;
               },
        err => { 
                //**here you do action whatever you want like this** if(err.status==409){}else{}
               }
            );