Angular 2+ 抛出 JS 错误,继续运行中断



我正在使用 Angular 构建一个工具(第 5 节),我遇到了一个问题,即某些错误似乎在应用程序继续运行时使某些东西崩溃。我的工具必须经过全面测试,产生的错误是编码错误,但问题是,发生这种情况时的用户体验对我来说似乎完全损坏且无法访问。

例如:我正在使用响应式表单来构建我们的动态表单。发生的问题是输入无法映射到其窗体控件。(在本例中,主表单内表单数组中组中的表单字段)

cannot find control with name 'XYZ'

这发生在测试期间,它破坏了应用程序,以至于用户仍然可以导航,但新页面会呈现在旧页面下方。我们有一个加载微调器,显示在 init 上和加载数据之前。从一个破碎的页面导航到一个发出HTTP请求的页面,加载了正在运行的页面,但实际上请求从未被执行。选择2也被打破了。因此,虽然JS在某种程度上崩溃了,但一些核心的Angular功能仍在工作,例如路由器。

我知道摆脱它的最佳方法是测试和修复错误,但这对用户来说非常恼火。在我们的反馈工具usersnap上,我收到了许多原始错误之后的票证,并且由于许多内容仍在渲染,因此很难从屏幕截图中看出到底出了什么问题。

有没有办法至少让应用程序以更优雅的方式崩溃?

我们在生产中使用哨兵进行错误记录,它作为替代错误处理程序实现:

export const provider = environment.production ? [{provide: ErrorHandler, useClass: RavenErrorHandler}] : [];

但是我想使用多个错误处理程序是不可能的?

加法: 这个问题源于我没有正确设置表单的事实。

如果您需要帮助,则需要显示一些更具体的代码,但一般来说,您的代码应该考虑所有可能的错误并处理错误,以便用户不会遇到这样的错误。

最新更新