Обработка ошибок в ErrorHandler и обработка в HttpInterceptor - PullRequest
0 голосов
/ 09 января 2020

В чем разница между двумя методами обработки ошибок в angular 7. Нужно ли обрабатывать глобальные ошибки в HttpInterceptor, а также во встроенном angular ErrorHandler. Пожалуйста, дайте мне знать в HttpInterceptor, какие типы ошибок мы можем обработать и в ErrorHandler, какие ошибки мы можем обрабатывать. Нужны ли нам оба или достаточно одного

export class InterceptorService implements HttpInterceptor {

  constructor() { }

  intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {  
    return next.handle(request).pipe(
      retry(1),
      catchError((error: HttpErrorResponse) => {
        let errMsg = '';
        if (error.error instanceof ErrorEvent) {
          // Client Side Error
          errMsg = `Client Error: ${error.error.message}`;
          console.log(error);
        }
        else {
          // Server Side Error
          errMsg = `Server Error: ${error.status},  Message: ${error.message}`;
          console.log(error);
        }
        return throwError(errMsg);
      })
    );
  }
}

export class ErrorsHandler  implements ErrorHandler {

    constructor(private injector: Injector) { }   
    
    handleError(error: Error | HttpErrorResponse) {
        const notificationService = this.injector.get(NotificationService);
        if (error instanceof HttpErrorResponse) {
            // Server or connection error happened
            if (!navigator.onLine) {
                // Handle offline error
                return notificationService.error('No Internet Connection');
            } else {
                // Handle Http Error 
                return notificationService.error(`${error.status} - ${error.message}`);
            }
        } else {
            // Handle Client Error 
            notificationService.error(error.message);    
        }      
    }
}

1 Ответ

0 голосов
/ 09 января 2020

Есть похожий вопрос здесь , возможно, это то, что вы ищете! :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...