2009-07-09 104 views

回答

16

这里有一个很热闹的讨论关于怎么没人似乎知道什么是手段:

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

从该链接的结尾:

域名在这里是指数据域。即 a DomainException必须抛出 只要一个值不符合 定义的有效数据域。示例:

  • 0不在划分域。
  • Foo不在平日的域中。

首先是从出 范围都不同,但你可以使用的情况下, InvalidParameter是 实际上到执行部门的功能 的参数。如果它是在执行除法和 之前在函数 内计算的 值,那么预条件检查将抛出 而不是执行除法 然后它变成DomainException

+0

哈哈这很漂亮+1 – oscarkuo 2009-07-09 10:15:30

3

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

参见domain of a function

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

4

RangeException描述是多一点有所帮助:

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

我认为它也适用于非算术,例如,看到这个user comment

例如,如果预期值是在集{'jpeg', 'png', 'gif', 'bmp'},您会收到别的东西一样'foo',它是一个DomainException(逻辑)的候选资格/ RangeException(运行)。我很肯定你可以考虑许多其他用例。


此外,我刚刚发现这个有用的文章,它提供了比php更彻底的解释。净: How to use built-in SPL exception classes for better error handling

相关问题