【问题标题】:Angular - ErrorHandler for interceptor for custom HTTP error handlingAngular - 用于自定义 HTTP 错误处理的拦截器的 ErrorHandler
【发布时间】:2019-03-18 13:32:06
【问题描述】:

我澄清了使用拦截 ErrorHandler 来处理 Angular 6+ 中 HTTP 请求和客户端错误的自定义错误。

它会因客户端错误而正确调用。但是对于 HTTP 错误,当添加了 HTTP 请求订阅者的错误处理程序时,不会调用自定义错误处理程序(参见下面的代码)。当错误处理程序从订阅者中删除时,同时调用自定义错误处理程序。这是预期的行为。在 Angular 文档中找不到任何与之相关的文档。

.subscribe(
  success => {
    this.processGetChart(success);
  },
  error => {
    this.errors = error;
    console.log('API Error: ', error);
  },
  () => {
  }
  );

谢谢,

彼得

【问题讨论】:

  • 抱歉,您的问题很不清楚。尝试完全改写它。一个好的模式是:我正在执行这个代码:。我预计会发生以下情况:<...>。但结果却是这样:<...>.</...></...>
  • 是的,预计当您处理错误时,您已经抓住了它,除非您重新抛出它,否则它不会继续前进。

标签: angular angular-errorhandler


【解决方案1】:

你可以有一个HttpInterceptor

在里面,你会发现不同类型的错误。

喜欢这个:

@Injectable()
export class customInterceptor implements HttpInterceptor {

  constructor() {
  }

  intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {

    return next.handle(request).pipe(
      tap((event: HttpEvent<any>) => {
        }, (err: any) => {
          if (err instanceof HttpErrorResponse) {
            if (err.status === 403 || err.status === 401) {
              // DO SOMETHING HERE.
            }
          }
        }
      )
    );
  }
}

【讨论】:

    猜你喜欢
    • 2016-09-20
    • 1970-01-01
    • 2021-06-15
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    • 2018-11-04
    • 2016-03-03
    • 2016-08-30
    相关资源
    最近更新 更多