Надлежащее использование исключений? - PullRequest
1 голос
/ 28 ноября 2009

Мы разрабатываем класс коллекции для специализированного приложения PHP. В нем есть функции с именами map, each и т. Д.

Возник спор о вызове некоторых функций с неверным аргументом. Например:

public function each($fn) {
    // ...
}

// ...

$collection->each('not a function');

Должен ли вызов each вызвать исключение? Должен ли он вернуть null? Должны ли мы игнорировать неверный аргумент и допустить ошибку времени выполнения при попытке вызвать несуществующую функцию? Я не уверен, как мы должны справиться с этим делом.

1 Ответ

3 голосов
/ 28 ноября 2009

исключения для исключительных ситуаций, не плохие кодеры.

Вместо этого используйте утверждения. Смотри http://php.net/manual/en/function.assert.php

Если это для библиотеки для внешнего использования, то исключения в открытых методах могут иметь смысл (например, InvalidArgumentException), но в целом утверждения больше подходят для внутренней проверки того, что ваш код удовлетворяет вашим требуемым условиям.

Возможно, другой пример поможет прояснить ситуацию, хорошее использование исключения - при доступе к файлу, и, поскольку есть некоторая вероятность, что ресурс не будет доступен из-за сбоя сервера и т. Д.

Также см. Проектирование по контракту с использованием утверждений или исключений?

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