你什么时候会在PHP中抛出一个DomainException?

2022-08-30 17:47:39

我正在浏览PHP中的预定义异常列表,我注意到DomainException。有人知道DomainException是什么意思吗?这是否意味着数据模型验证失败?


答案 1

这里有一个非常热闹的讨论,关于似乎没有人知道什么是意思:

http://bugs.php.net/bug.php?id=47097

从该链接的末尾:

域在这里表示数据域。每当值不符合定义的有效数据域时,即应引发该值。例子:DomainException

  • 0 不在用于除法的域中。
  • Foo 不在工作日的域中。

第一个不同于超出范围和类似,但你可以使用它,如果它实际上是执行除法的函数的参数。如果它是在执行除法之前在函数内部计算的值,然后引发预条件检查而不是执行除法,则它将成为 .InvalidParameterDomainException


答案 2

RangeException的描述更有帮助:

抛出异常以指示程序执行期间的范围错误。通常,这意味着存在除下溢/溢出以外的算术错误。这是 DomainException 的运行时版本。

我认为它也适用于非算术,例如,请参阅此用户评论

例如,如果您期望某个值在集合中,并且您收到其他类似的东西,那么它是 DomainException(逻辑)/RangeException(运行时)的良好候选者。我很确定你可以想到许多其他用例。{'jpeg', 'png', 'gif', 'bmp'}'foo'


另外,我刚刚找到了这篇有用的文章,它提供了比 php.net 更全面的解释: 如何使用内置的SPL异常类来更好地处理错误


推荐