Что не так с этим кодом?
На первый взгляд всё кажется логичным:
🔸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 обязателен.
