в сервисах?
мне кажется логичнее в сервисах, нахера мне сопровождать контроллер побочной логикой если я могу просто return await this.userService.create(createUserDto)
Лучше в контроллерах, сервис не должен знать об исключении, сервис должен вернуть результат работы метода, а контроллер, исходя из результата, вернёт его, преобразует или кинет ошибку
а что если у меня условно две причины по которым сервис может вернуть null?
Монада Either для сервисов. Исключения на уровне контроллеров.
На эту тему можешь почтать еще разницу между error и exception, слоёную архитектуру и exception as goto
А зачем их выкидывать? Интересно какие кейсы у вас
Зависит от причины/назначения. Если он касается запроса, например неавторизованный или запрещённый доступ к ресурсу, который в другом случае был бы возможен, то в контроллере, если касается работы метода сервиса, например внутреннюю ошибку базы данных, то в сервисе, ну и конечно нельзя забыть об ExceptionFilter, который может переделывать exception в нужный тебе формат
Почитал ваши ответы на свой вопрос и понял, что есть три варианта, которые юзаются чаще всего. 1. Рекомендуют в контроллере т.к. сервис не должен быть завязан на выброс ошибок из-за того, что он может в будущем заюзаться не для http запросов 2. Рекомендуют в сервисе т.к. в сервисе может быть несколько мест где нужно обрабатывать какая именно ошибка проишзошла 3. Заюзать Exception Filter. Хотел бы узнать мнение сообщества путем голосования)
Обсуждают сегодня