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

时间:2009-07-09 10:05:55

标签: php exception

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

3 个答案:

答案 0 :(得分:21)

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

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

从该链接的末尾开始:

  

域在此处表示数据域。那是   应抛出DomainException   每当一个值不符合a   定义有效数据域。例子:

     
      
  • 0不在分区域内。
  •   
  • Foo不在工作日的域名中。
  •   
     

第一个不同于   范围和相似,但你可以使用   如果是InvalidParameter   实际上是函数的一个参数   执行分裂。如果是的话   在函数内部计算的值   在执行分工之前   然后一个预先条件检查抛出   而不是执行分裂,   然后它变成DomainException

答案 1 :(得分:5)

RangeException的说明更有帮助:

  

抛出异常以指示程序执行期间的范围错误。通常这意味着除了/溢出之外还有一个算术错误。这是DomainException的运行时版本。

我认为它也适用于非算术,例如见user comment

例如,如果您希望某个值位于集合{'jpeg', 'png', 'gif', 'bmp'}中并且您收到其他内容,例如'foo',则它是DomainException(逻辑)的良好候选者/ RangeException(运行时)。我很确定你能想到许多其他用例。


另外,我刚刚发现这篇有用的文章,它提供了比php.net更详尽的解释: How to use built-in SPL exception classes for better error handling

答案 2 :(得分:3)

  

这种异常应该用于通知数学意义上的域错误。

请参阅domain of a function

例如,只为正数定义平方根函数(除非您使用复数...)