209 похожих чатов

Гайс. Вопрос насущный: где лучше выкидывать эксепшены? В контроллере или

в сервисах?

8 ответов

22 просмотра

мне кажется логичнее в сервисах, нахера мне сопровождать контроллер побочной логикой если я могу просто return await this.userService.create(createUserDto)

Лучше в контроллерах, сервис не должен знать об исключении, сервис должен вернуть результат работы метода, а контроллер, исходя из результата, вернёт его, преобразует или кинет ошибку

Дмитрий Могилевцев
Лучше в контроллерах, сервис не должен знать об ис...

а что если у меня условно две причины по которым сервис может вернуть null?

Монада Either для сервисов. Исключения на уровне контроллеров.

На эту тему можешь почтать еще разницу между error и exception, слоёную архитектуру и exception as goto

А зачем их выкидывать? Интересно какие кейсы у вас

Зависит от причины/назначения. Если он касается запроса, например неавторизованный или запрещённый доступ к ресурсу, который в другом случае был бы возможен, то в контроллере, если касается работы метода сервиса, например внутреннюю ошибку базы данных, то в сервисе, ну и конечно нельзя забыть об ExceptionFilter, который может переделывать exception в нужный тебе формат

Азамат-Куандыков Автор вопроса

Почитал ваши ответы на свой вопрос и понял, что есть три варианта, которые юзаются чаще всего. 1. Рекомендуют в контроллере т.к. сервис не должен быть завязан на выброс ошибок из-за того, что он может в будущем заюзаться не для http запросов 2. Рекомендуют в сервисе т.к. в сервисе может быть несколько мест где нужно обрабатывать какая именно ошибка проишзошла 3. Заюзать Exception Filter. Хотел бы узнать мнение сообщества путем голосования)

Похожие вопросы

Обсуждают сегодня

Карта сайта