Angular应用程序中的抛出错误

时间:2018-07-25 00:47:33

标签: angular exception error-handling

在一般情况下,尤其是在Angular应用程序中,何时抛出错误是否有任何准则? 我正在考虑的用例: 1.尚未提供组件所需的输入字段。 2.未提供函数所需的参数(特别是在自定义验证器中,未提供formControl)。 据我了解,不会发现这些错误。

1 个答案:

答案 0 :(得分:0)

您的问题主要基于观点。没有规则说明是否应该使用异常。所以我什至不能说这个答案是正确的。

  

在一般情况下,尤其是在Angular应用程序中,何时抛出错误是否有任何准则?

没有指导原则。

Angular允许您通过ErrorHandler类侦听未处理的错误,但是对抛出错误没有任何限制。

  
      
  1. 未提供组件所需的输入字段。
  2.   

@Input()批注没有 required 标志,但我希望它有。

由您自己决定是否要引发异常,但是很难知道是否设置了绑定。您可以检查属性的值,或者检查是否从未调用过NgOnChange。

  
      
  1. 未提供函数所需的参数(特别是在自定义验证器中,未提供formControl)。据我了解,不会发现这些错误。
  2.   

与所有未处理的错误一样,它们也被转发到ErrorHandler。在该类中,您几乎无能为力地处理错误。

如果需要参数,则抛出错误告诉程序员他们做错了事。

副作用

如果您在Angular生命周期挂钩(这是大多数组件方法)中抛出未处理的错误,则可能会损坏Angular。该应用程序可能会进入不可恢复的状态。

根据我的经验,最佳实践是在Observables中抛出错误,并在其他地方尽可能妥善地处理不良数据。 Observable似乎是Angular内唯一的错误安全域,因为我从未见过Observable崩溃Angular内有未处理的错误。