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 之外的其他错误,并阻止应用按原样工作的主要内容,如果未能解决你的问题,请参考以下文章
[2016-03-11][POJ][1887][Testing the CATCHER]