我可以将角度HTTP拦截器扔掉500吗?

问题描述

我有一个HTTP拦截器,它将拦截500个错误并向用户显示一个对话框。下面是我的拦截代码一个片段:@H_404_1@

intercept(req: HttpRequest<any>,next: HttpHandler): Observable<HttpEvent<any>> {
    ....
    return next.handle(request).pipe(catchError(error => {
        // intercept the respons error

        this.handleAuthError(error,request); // pass error to function
        return of(error.error);
    }) as any,finalize(() => {
        ++this.counter;
        this.enableSubmissionButton(this.counter);
    }));
}

private handleAuthError(err: HttpErrorResponse,request: HttpRequest<any>): Observable<HttpEvent<any>> {
    // handle your auth error or rethrow
    let errorMessage: any = '';

    if (err.error instanceof ErrorEvent) {
        errorMessage = `Error: ${err.error.message}`;
    } else {
        errorMessage = `Error Code: ${err.status}\nMessage: ${err.message}`;
        if (err.status === 401 || err.status === 403) {
            this.userAuthService.purgeAuth();
        } else if (err.status === 500 || err.status === 404) {
            this.dialog.open(MessageDialogComponent,{
                disableClose: true,data: err.error.Message || `${err.status} ${err.statusText}`,});
        }
    }
    return throwError(errorMessage);
}

我正在对组件中的一个API调用进行一些更改,现在我想知道调用API时是否存在任何http错误。@H_404_1@

this.subscription.add(
        url.subscribe(data => {
            if (data.Status) {
                // Save was successful.
            } 
        },err => {
            console.log(err);
        })
    );

很明显,上面的console.log不会发生,因为HTTP拦截器会处理它。 即使http拦截器已处理该错误,我该怎么做以检查上面的请求是否存在(例如)500错误。如果此请求有任何此类错误,我需要运行一些特定的代码@H_404_1@

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)