【问题标题】:using OutOfBoundsException for non arrays对非数组使用 OutOfBoundsException
【发布时间】:2015-07-18 05:45:21
【问题描述】:

假设我有一个方法可以接收 0 到 x 之间的值。如果参数大于 x 或小于零,我想抛出异常。 OutOfBoundsException 是合理的抛出异常吗?

http://php.net/manual/en/class.runtimeexception.php 表示这是“如果值不是有效键则引发异常”。由于我没有将这个异常与数组(以及此后的键)一起使用,如果我使用它仍然可以吗?

我的意思是,一方面,这似乎并不重要。就像我抛出了一个 BadMethodCallException 异常并且使用该方法的人知道这一点并且正在为此或 Exception 捕获它似乎就足够了,但如果有一个有意义的异常也会很好.

【问题讨论】:

  • 应该不是问题。但我建议使用您自己更直观的异常来扩展它。

标签: php exception spl


【解决方案1】:

它应该很好并且适合用于这样的事情。异常通常不会与其原始用途紧密耦合。它超出了允许值的范围,因此“超出范围”,所以这是有道理的。

【讨论】:

    【解决方案2】:

    从预定义的 SPL 异常中,我更喜欢InvalidArgumentException。但是它的文档说:

    如果参数不是预期的类型,则抛出异常。

    在您的情况下,参数的类型不是问题。另一种选择是UnexpectedValueException

    如果一个值与一组值不匹配,则会引发异常。通常,当一个函数调用另一个函数并期望返回值是某种类型或值时,会发生这种情况,不包括算术或缓冲区相关的错误。

    如果你忽略“通常...”这句话,这应该是合适的。

    我的意思是,一方面,这似乎并不重要。就像我抛出了一个 BadMethodCallException 异常并且使用该方法的人知道这一点并且正在为此或 Exception 捕获它似乎就足够了,但如果有一个有意义的异常也会很好.

    我完全同意这一点。而且由于预定义的异常没有明确记录,我宁愿实现我自己的。您仍然可以从 SPL 扩展 RuntimeException

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-24
      • 1970-01-01
      • 1970-01-01
      • 2011-10-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-08
      • 1970-01-01
      相关资源
      最近更新 更多