Я бы выдал исключение из-за неисправимой ошибки.
Например, предположим, что у вас есть такой метод, как getById($id). Можно вернуть null, если ничего не найдено. Теперь предположим, что у вас есть другой метод, delete($id), который сам вызовет getById($id). В этом случае, если ничего не найдено (т. е. getById вернул null), должно быть выдано исключение.
Помните, что всякий раз, когда вы сообщаете об ошибке с возвращаемым значением, являющимся нулем, пустым массивом или строкой или даже целым числом, вам нужно будет обработать эту ошибку, возможно, выполняя некоторую очистку где-то еще в зависимости от возвращаемого значения. Это может привести к некоторой грязи во всех задействованных методах/функциях.
Использование исключений позволит вам обрабатывать и перехватывать эти ошибки только в одном месте (в улове). Таким образом, вам не нужно копировать код, проверяющий наличие ошибки (был ли возвращен пустой массив? Было ли возвращаемое значение 1, 2 или 9? и т. д.). Кроме того, использование исключений позволяет легко «каталогизировать» тип ошибки (например, исключение бизнес-логики или недопустимые аргументы) без написания большого количества «если» в источнике.
Таким образом, если функция/метод что-то возвращает (т. е. завершилась нормально), возвращаемое значение — это то, что вы можете использовать (пустой массив, нуль или пустая строка — все это допустимые возвращаемые значения). Если функция/метод выдает исключение, явно что-то пошло не так.
Еще одна важная вещь заключается в том, что null может быть равен false, 0 и пустой строке, если вы не используете строгую проверку (=== против ==), так что это может привести к другим видам ошибок. Здесь исключения также могут быть преимуществом.
И, конечно же, что бы вы ни решили, важно, чтобы ваш выбор соответствовал коду.
person
marcelog
schedule
17.01.2012