Angular intercept catcherror 还会捕获除 404 之外的其他错误,并阻止应用按原样工作

Posted

技术标签:

【中文标题】Angular intercept catcherror 还会捕获除 404 之外的其他错误,并阻止应用按原样工作【英文标题】:Angular intercept catcherror also catches other errors besides 404 and is preventing the app to working as is 【发布时间】:2020-09-15 06:41:49 【问题描述】:

我有一个拦截 404 错误的拦截器

intercept(req: HttpRequest, next: HttpHandler): Observable>

    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 有关,但我迷路了。感谢您的帮助。

【问题讨论】:

当它“停止正常工作”时到底发生了什么? 我有一个带有 api 调用的模式,即使我的响应是错误 422 但不再显示 【参考方案1】:

catchError 仍然需要返回一些东西。如果它没有返回一个 observable,你可能会得到一个错误。

将其更改为这样,以便处理 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;

【讨论】:

以上是关于Angular intercept catcherror 还会捕获除 404 之外的其他错误,并阻止应用按原样工作的主要内容,如果未能解决你的问题,请参考以下文章

flex 3 http catcher

Angular 6,不能应用多个HttpHeaders

Angular 中的不记名令牌

[2016-03-11][POJ][1887][Testing the CATCHER]

从 Angular HttpInterceptor 调用 Promise

Angular 5 Header 值未正确附加 [重复]