正确的异常类型是否在不允许的情况下添加到数组?

时间:2011-11-21 22:05:11

标签: php arrays exception

假设我有一个实现ArrayAccess的类,但不允许添加新数据。您可以设置现有值,但不能添加大小。

$arrayAccessible[1] = new StdClass(); //okay
$arrayAccessible[] = new StdClass(); //should throw an exception

我应该抛出什么异常类型?我确实有可用的SPL异常类型,如果有意义的话应该使用它们。我能想到的最好的可能是BadFunctionCallExceptionBadMethodCallException

如果没有一个好的投掷,也许我会做UnsupportedOperationException之类的。但是,这绝对不是我想做的事情。在这个项目中添加起来非常困难。

2 个答案:

答案 0 :(得分:6)

老实说,我会扔OverflowException。由于阵列是固定的,因此根据定义也是完整的......

答案 1 :(得分:1)

我说UnsupportedOperationException足够好了 - 它描述了发生得很好的问题,开发人员应该能够轻松搞清楚发生了什么。如果您不确定或想要更具体,请创建自己的例外。

另外,如果我想让字段只读,我可能不会使用ArrayAccess(除非您正在使用遗留代码)。吸气者应该做到这一点。如果要迭代对象的属性,请同时实现Iterator interface。