tgoop.com/dmdev_talks/318
Last Update:
#ВашВопрос
👇
Где лучше выбрасывать исключения? На уровне сервисов там где и основная бизнес логика или на уровне контроллеров?
Исключения должны выбрасываться в тех местах, где продолжение программы невозможно, потому что состояние выполнения запроса не верно ввиду каких-то логических условий. Вопрос здесь в другом - где лучше обрабатывать исключения. А вот здесь уже большое поле для выбора.
1. Начнем с самого простого: ошибки базы данных нет смысла обрабатывать на уровне dao/repository, потому что в таком случае клиент даже не узнает, произошло успешное выполнение запроса и состояние сохранилось в базе или нет.
2. Пункт 1 ведет к тому, что ошибки обрабатываются на уровнях выше: service, controller, http filters, kafka consumers, etc. Поэтому вопрос становится следующий:
можем ли мы обработать ошибку здесь и сейчас, чтобы продолжить ход выполнения программы, или же нам нужно пробросить на уровень выше, потому что на текущем уровне мы не можем принять этого решения?
Если ответ да - обрабатываем и продолжаем выполнять код программы. В противном случае пробрасываем ошибку выше и прерываем выполнение.
3. Если на пункте 2 мы и так находимся на последнем уровене, то нам придется принять решение о том, как обработать ошибку и какой вернуть ответ клиенту/пользователю.
BY DMdev talks

Share with your friend now:
tgoop.com/dmdev_talks/318