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

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

в сервисах?

8 ответов

24 просмотра

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

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

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

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

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

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

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

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

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

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

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

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

@Benzenoid can you tell me the easiest, and safest way to bu.y HEX now?
Živa Žena
20
This is a question from my wife who make a fortune with memes 😂😂 About the Migration and Tokens: 1. How will the old tokens be migrated to the new $LGCYX network? What is th...
🍿 °anton°
2
What is the Dex situation? Agora team started with the Pnetwork for their dex which helped them both with integration. It’s completed but as you can see from the Pnetwork ann...
Ben
1
Anyone knows where there are some instructions or discort about failed bridge transactions ?
Jochem
21
@lozuk how do I get my phex copies of my ehex from a atomic wallet, to move to my rabby?
Justfrontin 👀
11
Hello, Is iExec also part of the "inception program" or another one ? Would it be a name to qualified the nature of the relationship between iExec and Nvidia? And does Secret ...
Ñïķøłäś
8
Ready for some fun AND a chance to win TKO Tokens? Join us for exciting minigames in our Telegram group! 🕒 Don’t miss out—games start on today 25 October 2024, at 8 PM! Ge...
Milkyway | Tokocrypto
255
any reference of this implementation?
BitBuddha
29
Also, why can’t the community have a vote/ say when it comes to initiatives like buybacks. Isn’t the point of crypto decentralisation? Don’t we deserve input as long term supp...
👨🏽‍🦰
13
Hi guys, any problem with Pulsebrige? Trying to transfer from wETH to ETH. First it tells me to connect my metamask "through mobile app" not desktop. Then I did and confirmed ...
Snowflakecrypto
13
Карта сайта