Почти каждый С# разработчик допускал эту ошибку.
Что не так с этим кодом?
На первый взгляд всё кажется логичным:
🔸API-эндпоинт регистрации пользователя вызывает UserService
🔸UserService сохраняет пользователя в базу и вызывает EmailService
🔸EmailService через SmtpClient отправляет письмо
Но если присмотреться, метод SendWelcomeEmail объявлен как async void.
В чём проблема с async void?
Вот суть:
❌ async void делает невозможным отлов исключений.
Если внутри SendEmailAsync() произойдёт исключение — catch его не перехватит.
Вместо этого приложение может тихо упасть или начать вести себя непредсказуемо.
Почему так происходит?
Методы async void не возвращают Task, поэтому вызывающий код не может их await-ить и обрабатывать ошибки.
Исключения из async void проходят мимо стандартных механизмов обработки.
Правильный подход:
✅Всегда возвращай Task
Запомни: async void допустим только для обработчиков событий, где возвращаемый void обязателен.
Post #482
2.36K

- 👍 11
- ❤ 3
- 🥰 1