问题标签 [angular-errorhandler]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
angular - Angular - ErrorHandler 中的导航仅适用于 zone.run()
我为所有未处理的异常在 Angular(版本 5.2.0)中实现了一个全局错误处理程序。
全局错误处理程序如下所示:
路由仅在我有电话时才有效this.zone.run(...)
。如果我删除此调用,则路由只会将路由添加error
到 URL 而不会显示组件。ngOnInit 也没有被调用。
如果我必须使用这样的“hack”来让我的路由对我有用,那么我的应用程序中的某个地方似乎配置错误。
有人知道我需要改变什么才能让它在没有区域调用的情况下运行吗?
我的路由:
这是我调用的错误组件:
angular - 如何处理 Angular 4 中自定义全局错误处理程序引发的错误
在 Angular 4 中,使用带有拦截器的自定义错误处理程序,一切正常。以下是工作流程。
以下是我最了解如何处理错误的工作流程。
每当一个方法调用 HTTP 请求(使用 HttpClient)并且响应作为错误出现时
- 首先它到达拦截器(error.interceptor.ts)
- 在这里我们检查错误状态。
- 基于状态码,创建新对象
appError
,它是单个错误类的实例,例如。new AccessDenied(err.error))
- 在这个扩展类
的自定义类 ( access-denined.ts ) 中
AppError
- 我们调用
super()
使用父类方法。
- 我们调用
然后使用throw Observable.error(appError)
from error.interceptor.ts发送这个新创建的错误对象
现在,这个错误由
catch
组件中 HTTP 请求的订阅者块处理app.component.ts
- 在这里,我们以 HTML 格式显示自定义错误消息,或者我们将错误发送到下一个使用
throw error
- 在这里,我们以 HTML 格式显示自定义错误消息,或者我们将错误发送到下一个使用
现在这个错误将由全局错误处理程序(global-error-handler.ts)处理,它扩展了 Angular 的
ErrorHandler
接口- 这里我们再次检查这个错误是实例
AppError
还是系统错误,然后在这里处理错误
- 这里我们再次检查这个错误是实例
app.module.ts
app.component.ts
错误拦截器.ts
拒绝访问.ts
应用程序错误.ts
全局错误处理程序.ts
现在我的查询是,如果我在 if 块中写入throw error
而global-error-handler.ts
不是在控制台中显示以下错误
未捕获(来自文件名 Subscribe.js )
那么我们如何处理这个错误呢?我的意思是,如果我们从全局错误处理程序中写入,我们将throw error
如何以及在哪里处理它?
angular - Angular 4:主题或行为主题的自定义错误处理程序不起作用
我正在添加带有要发出的事件的自定义错误处理程序,在错误时我想向主组件发出错误消息以在页面顶部显示它。
主要组件.ts
在从后端收到错误时,它会触发 handleError 方法,但不会将错误消息发送到 MainComponent。
更新的问题 还在 MainModule 中添加了以下行
providers: [{provide:ErrorHandler, useClass:GlobalErrorHandler}]
angular - 如何检测角度模板中是否发生错误?
我正在研究角度的全局错误处理程序,我的项目的要求也是在错误时显示一个模态窗口,以便用户可以报告是否有问题并且我们可以修复它。除非模板中发生错误,否则它工作正常。在这种情况下,更改检测基本上被破坏了,它不更新绑定,因此 Material Modal Dialog 显示为空。我试图用谷歌搜索并检查 ngDebugContext 中的所有可用数据,但没有什么能回答我的问题。关键是如果模板中发生错误(或者我们可以知道更改检测是否通常已失效),那么我只会显示警报。作为最后的解决方案,我将只使用静态模板创建模态组件,其中文本将被硬编码并在出现任何未处理的错误时显示。
angular - 角度错误处理程序
我在我的应用程序中实现了一个全局错误处理程序。我目前的问题是它正在拦截与客户端相关的错误,但它没有拦截任何 http 调用的服务器错误。这是错误处理程序实现的样子:
我提供GlobalErrorHandler
这样AppModule
的:
任何想法为什么处理程序没有拦截http错误?
angular - Angular 5:HttpInterceptor 可以替换 ErrorHandler
在阅读 Angular 5 中的错误处理时,我遇到了两种方法:1. HttpInterceptor 和 2. ErrorHandler。
- HttpInterceptor 是不是比 ErrorHandler 更好的解决方案?
- 您可以在您的应用程序中同时实现这两种功能吗?
这个场景有意义吗?让 HttpInterceptor 处理 HTTP 调用错误并将 Header 添加到请求等,然后通过使用 Observable.throw(error) 中继未处理的错误,以便 ErrorHandler 可以将其作为全局级别处理?
angular - 错误处理程序和 RxJS 6.2.2
我有一个带有 globalError 处理程序的应用程序,如下所示:
这在每个星座中总是有效的。如果抛出错误,全局处理程序会捕获并处理它。
现在升级到 RxJs 6.2.2 后,我了解到捕获 http 错误发生了变化。
代码错误仍然有效,但 HttpClient 抛出的错误不会被全局捕获。GlobalErrorHandler 不再被触发。
我知道我可以处理我的服务中的错误,并且可以像这样正常工作:
但我实际上想集中处理所有错误。
Angular 6 和 RxJs 6 集中处理错误的正确方法是什么?
error-handling - Angular GlobalErrorHandler 和 HttpErrorResponse - 解析器抛出格式错误的 HttpErrorResponse
我在 Angular 6 应用程序中创建了全局错误处理程序:
主要错误处理方法:
问题:许多 HTTP 服务调用是在解析器中执行的:
如果在这样的调用中发生 Http 错误,我的全局错误处理程序收到的错误将形成为包裹在 Error 中的 HttpErrorResponse(错误消息是 HttpErrorResponse):
如果 Http 错误发生在解析器之外,则全局错误处理程序可以正常工作。
为了达到我的目标(从解析器抛出 HttpErrorResponse),我需要指定在订阅内的错误回调中处理错误的方式,但我不能这样做,因为解析器是管理订阅的人。
有没有办法指定解析器应该如何处理错误?
我想避免手动解析这些包装错误。