在 Angular 应用程序中抛出错误
Posted
技术标签:
【中文标题】在 Angular 应用程序中抛出错误【英文标题】:Throwing errors in Angular application 【发布时间】:2019-01-01 17:06:03 【问题描述】:关于何时抛出一般错误,特别是在 Angular 应用程序中,是否有任何指导方针? 我正在考虑的用例: 1. 未提供组件所需的输入字段。 2. 未提供函数所需的参数(具体而言,在自定义验证器中,未提供 formControl)。 据我了解,这些错误不会被捕获。
【问题讨论】:
【参考方案1】:您的问题主要基于意见。没有规则说明您是否应该使用例外。所以我什至不能说这个答案是正确的。
关于何时抛出一般错误,特别是在 Angular 应用程序中,是否有任何指导方针?
没有指导方针。
Angular 有办法让您通过 ErrorHandler 类来监听未处理的错误,但抛出错误没有限制。
未提供组件所需的输入字段。
@Input()
注释没有必需的标志,但我希望它有。
是否抛出异常取决于您,但很难知道是否设置了绑定。您可以检查属性的值或检查是否从未调用过 NgOnChange。
未提供函数所需的参数(具体而言,在自定义验证器中,未提供 formControl)。据我了解,这些错误不会被捕获。
与所有未处理的错误一样,它们会被转发到 ErrorHandler。您在课堂上几乎无法实际处理错误。
如果需要参数,则抛出错误告诉程序员他们做错了什么。
副作用
如果您在 Angular 生命周期钩子(这是大多数组件方法)期间抛出未处理的错误,则可能会破坏 Angular。应用程序很可能会进入不可恢复的状态。
根据我的经验,最佳实践是在 Observables 中抛出错误,并在其他任何地方尽可能优雅地处理不良数据。 Observables 似乎是 Angular 中唯一的错误安全域,因为我从未在 Observable 崩溃 Angular 中看到未处理的错误。
【讨论】:
以上是关于在 Angular 应用程序中抛出错误的主要内容,如果未能解决你的问题,请参考以下文章
如何解决 Angular 单元测试错误:“在 afterAll\n[object ErrorEvent] 中抛出了一个错误”