你什么时候会在PHP中抛出一个DomainException?
我正在浏览PHP中的预定义异常列表,我注意到DomainException。有人知道DomainException是什么意思吗?这是否意味着数据模型验证失败?
我正在浏览PHP中的预定义异常列表,我注意到DomainException。有人知道DomainException是什么意思吗?这是否意味着数据模型验证失败?
这里有一个非常热闹的讨论,关于似乎没有人知道什么是意思:
http://bugs.php.net/bug.php?id=47097
从该链接的末尾:
域在这里表示数据域。每当值不符合定义的有效数据域时,即应引发该值。例子:
DomainException
- 0 不在用于除法的域中。
- Foo 不在工作日的域中。
第一个不同于超出范围和类似,但你可以使用它,如果它实际上是执行除法的函数的参数。如果它是在执行除法之前在函数内部计算的值,然后引发预条件检查而不是执行除法,则它将成为 .
InvalidParameter
DomainException
RangeException
的描述更有帮助:
抛出异常以指示程序执行期间的范围错误。通常,这意味着存在除下溢/溢出以外的算术错误。这是 DomainException 的运行时版本。
我认为它也适用于非算术,例如,请参阅此用户评论。
例如,如果您期望某个值在集合中,并且您收到其他类似的东西,那么它是 DomainException(逻辑)/RangeException
(运行时)的良好候选者。我很确定你可以想到许多其他用例。{'jpeg', 'png', 'gif', 'bmp'}
'foo'
另外,我刚刚找到了这篇有用的文章,它提供了比 php.net 更全面的解释: 如何使用内置的SPL异常类来更好地处理错误