Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Можно ли возвращать null из функции?

27.04.24 12:39
Re: Можно ли возвращать null из функции?
 
в ответ AlexNek 27.04.24 12:17, Последний раз изменено 27.04.24 12:46 (Бесконечный цикл)
вроде как с правилом определились - исключения только в случае баальшой ошибки.

Не надо смешивать теплое с мягким:

  • исключение (или возврат) это технические средства откинуться из программы и что-то вернуть. Т.е. мы выбираем между throw или return.
  • ошибки или не ошибки это семантика программы и логика обработки. "Пользователь не найден" это можно быть баальшой ошибки, если это запрещено в доках. Но это может быть нормально, если в доках написано что этого следует ожидать. Здесь мы решаем разрешается ли null или нет.


Ну чтобы было понятноее. Throw (exception) и return это два технических способа вывалиться их программы и вернуть какое-то значение в исходную:

  • Можно использовать только return,
  • а можно переписать все только на throw без возвратов вообще

Извне разницы не будет видно и это только вопрос удобства, предпочтений, best practices, религиозных и сексуальных предпочтений. Поэтому важно разделить эти два аспекта: логика программы и способ возврата (исключения vs. возврат).


Когда использовать исключения, а когда возврат и в чем разница? Это следующий холивар. Я бы сказал, что принципиальное отличие исключений в том, что они умеют вываливаться иерархически через многие уровни и делают это по умолчанию (если их не поймали). Возвраты таким не занимаются и вываливаются только на один уровень выше. Отсюда вывод: если хочешь чтобы твой результат мог быть виден на все уровни выше, то используй исключения (throw). Если твой резуьтат только для одного исходного метода, то используй возврат (return).

 

Перейти на