问题标签 [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.

0 投票
4 回答
3109 浏览

angular - Angular - ErrorHandler 中的导航仅适用于 zone.run()

我为所有未处理的异常在 Angular(版本 5.2.0)中实现了一个全局错误处理程序。

全局错误处理程序如下所示:

路由仅在我有电话时才有效this.zone.run(...)。如果我删除此调用,则路由只会将路由添加error到 URL 而不会显示组件。ngOnInit 也没有被调用。

如果我必须使用这样的“hack”来让我的路由对我有用,那么我的应用程序中的某个地方似乎配置错​​误。

有人知道我需要改变什么才能让它在没有区域调用的情况下运行吗?


我的路由:


这是我调用的错误组件:

0 投票
0 回答
220 浏览

angular - 在 Angular 2/4 中使用 ErrorHandler 捕获引导错误

我想使用 ErrorHandler 以角度捕捉这个错误。我现在被卡住了,因为我无法在 angular 4 中的 customError 处理中处理这个错误。我该怎么做?

0 投票
0 回答
3275 浏览

angular - 如何处理 Angular 4 中自定义全局错误处理程序引发的错误

在 Angular 4 中,使用带有拦截器的自定义错误处理程序,一切正常。以下是工作流程。

以下是我最了解如何处理错误的工作流程。

每当一个方法调用 HTTP 请求(使用 HttpClient)并且响应作为错误出现时

  1. 首先它到达拦截器(error.interceptor.ts
    • 在这里我们检查错误状态。
    • 基于状态码,创建新对象appError,它是单个错误类的实例,例如。new AccessDenied(err.error))
  2. 在这个扩展类 的自定义类 ( access-denined.ts ) 中AppError
    • 我们调用super()使用父类方法。

然后使用throw Observable.error(appError)from error.interceptor.ts发送这个新创建的错误对象

  1. 现在,这个错误由catch​​组件中 HTTP 请求的订阅者块处理app.component.ts

    • 在这里,我们以 HTML 格式显示自定义错误消息,或者我们将错误发送到下一个使用throw error
  2. 现在这个错误将由全局错误处理程序(global-error-handler.ts)处理,它扩展了 Angular 的 ErrorHandler接口

    • 这里我们再次检查这个错误是实例AppError还是系统错误,然后在这里处理错误

app.module.ts

app.component.ts

错误拦截器.ts

拒绝访问.ts

应用程序错误.ts

全局错误处理程序.ts

现在我的查询是,如果我在 if 块中写入throw errorglobal-error-handler.ts不是在控制台中显示以下错误

未捕获(来自文件名 Subscribe.js )

那么我们如何处理这个错误呢?我的意思是,如果我们从全局错误处理程序中写入,我们将throw error如何以及在哪里处理它?

0 投票
1 回答
457 浏览

angular - Angular 4:主题或行为主题的自定义错误处理程序不起作用

我正在添加带有要发出的事件的自定义错误处理程序,在错误时我想向主组件发出错误消息以在页面顶部显示它。

主要组件.ts

在从后端收到错误时,它会触发 handleError 方法,但不会将错误消息发送到 MainComponent。

更新的问题 还在 MainModule 中添加了以下行

providers: [{provide:ErrorHandler, useClass:GlobalErrorHandler}]

0 投票
2 回答
1622 浏览

angular - 如何检测角度模板中是否发生错误?

我正在研究角度的全局错误处理程序,我的项目的要求也是在错误时显示一个模态窗口,以便用户可以报告是否有问题并且我们可以修复它。除非模板中发生错误,否则它工作正常。在这种情况下,更改检测基本上被破坏了,它不更新绑定,因此 Material Modal Dialog 显示为空。我试图用谷歌搜索并检查 ngDebugContext 中的所有可用数据,但没有什么能回答我的问题。关键是如果模板中发生错误(或者我们可以知道更改检测是否通常已失效),那么我只会显示警报。作为最后的解决方案,我将只使用静态模板创建模态组件,其中文本将被硬编码并在出现任何未处理的错误时显示。

0 投票
0 回答
102 浏览

angular - 角度错误处理程序

我在我的应用程序中实现了一个全局错误处理程序。我目前的问题是它正在拦截与客户端相关的错误,但它没有拦截任何 http 调用的服务器错误。这是错误处理程序实现的样子:

我提供GlobalErrorHandler这样AppModule的:

任何想法为什么处理程序没有拦截http错误?

0 投票
3 回答
82979 浏览

angular - Angular 6 中的 Http 错误处理

我,正在尝试使用角度 6 中的以下类来处理 http 错误。我从服务器获得了 401 未授权状态。但是我没有看到控制台错误消息。

HttpErrorsHandler.ts 文件

http错误

app.module.ts 文件

Http调用文件

admin.user.component.ts 文件

0 投票
2 回答
937 浏览

angular - Angular 5:HttpInterceptor 可以替换 ErrorHandler

在阅读 Angular 5 中的错误处理时,我遇到了两种方法:1. HttpInterceptor 和 2. ErrorHandler。

  1. HttpInterceptor 是不是比 ErrorHandler 更好的解决方案?
  2. 您可以在您的应用程序中同时实现这两种功能吗?

这个场景有意义吗?让 HttpInterceptor 处理 HTTP 调用错误并将 Header 添加到请求等,然后通过使用 Observable.throw(error) 中继未处理的错误,以便 ErrorHandler 可以将其作为全局级别处理?

0 投票
1 回答
3739 浏览

angular - 错误处理程序和 RxJS 6.2.2

我有一个带有 globalError 处理程序的应用程序,如下所示:

这在每个星座中总是有效的。如果抛出错误,全局处理程序会捕获并处理它。

现在升级到 RxJs 6.2.2 后,我了解到捕获 http 错误发生了变化。

代码错误仍然有效,但 HttpClient 抛出的错误不会被全局捕获。GlobalErrorHandler 不再被触发。

我知道我可以处理我的服务中的错误,并且可以像这样正常工作:

但我实际上想集中处理所有错误。

Angular 6 和 RxJs 6 集中处理错误的正确方法是什么?

0 投票
1 回答
667 浏览

error-handling - Angular GlobalErrorHandler 和 HttpErrorResponse - 解析器抛出格式错误的 HttpErrorResponse

我在 Angular 6 应用程序中创建了全局错误处理程序:

主要错误处理方法:

问题:许多 HTTP 服务调用是在解析器中执行的:

如果在这样的调用中发生 Http 错误,我的全局错误处理程序收到的错误将形成为包裹在 Error 中的 HttpErrorResponse(错误消息是 HttpErrorResponse):

如果 Http 错误发生在解析器之外,则全局错误处理程序可以正常工作。

为了达到我的目标(从解析器抛出 HttpErrorResponse),我需要指定在订阅内的错误回调中处理错误的方式,但我不能这样做,因为解析器是管理订阅的人。

有没有办法指定解析器应该如何处理错误?

我想避免手动解析这些包装错误。