Правильный тип исключения для добавления в массив, когда это не разрешено? - PullRequest
3 голосов
/ 22 ноября 2011

Допустим, у меня есть класс, который реализует ArrayAccess, но не позволяет добавлять новые данные.Вы можете установить уже существующие значения, но не можете добавить к размеру.

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

Какой тип исключения я должен выбросить?У меня есть типы исключений SPL, и я должен использовать их, если это имеет смысл.Лучшее, что я могу придумать, это, возможно, BadFunctionCallException или BadMethodCallException.

Если нет хорошего броска, возможно, я сделаю UnsupportedOperationException или подобное.Тем не менее, это определенно не то, что я хотел бы сделать.Это было бы невероятно сложно добавить в этот проект.

Ответы [ 2 ]

6 голосов
/ 22 ноября 2011

Честно говоря, я бы выбросил OverflowException . Поскольку массив фиксирован, по определению он также полон ...

1 голос
/ 22 ноября 2011

Я бы сказал, UnsupportedOperationException достаточно хорошо - он описывает проблему, которая возникла хорошо, и коллега-разработчик должен быть в состоянии выяснить, что произошло легко. Если вы не уверены или хотите быть более конкретным, создайте собственное исключение.

Кроме того, я бы не стал использовать ArrayAccess (если вы не работаете с устаревшим кодом), если бы я хотел, чтобы поля были доступны только для чтения. Добытчики должны сделать свое дело. Если вы хотите перебрать свойства объекта, реализуйте также интерфейс Iterator .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...