Angular Intercept catcherror还捕获除404之外的其他错误,并阻止了应用正常运行

时间:2020-05-28 03:15:08

标签: angular error-handling observable interceptor angular-http-interceptors

我有一个拦截器,可以捕获404错误

拦截(要求:HttpRequest,下一个:HttpHandler):可观察> {

    return next.handle(req).pipe(retry(1),
    catchError((error) => { // catch error after retry
        console.log('err');
        if (error instanceof HttpErrorResponse) {
            if (error.status === 404) {
                console.log('errrr');
            }
        }
}

问题是当错误不是404错误时,应用程序会在遇到422错误后停止正常运行。如果错误不是404,则该应用程序应继续按原样工作。我认为它与catcherror有关,但Im丢失了。感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

catchError仍然需要返回一些内容。如果它没有返回可观察到的信息,则可能是错误提示。

将其更改为此,以便可以处理404,但其他所有内容都将被抛弃

catchError((error) => { // catch error after retry
    console.log('err');
    if (error instanceof HttpErrorResponse) {
        if (error.status === 404) {
            console.log('errrr');
            return EMPTY;
        }
    }
    throw error;

}