async void는 이벤트 핸들러에만 사용

C#에서 async void 메서드는 예외 처리가 어렵고
비동기 흐름을 제어하기 힘들기 때문에
이벤트 핸들러에서만 사용해야 합니다.
그 외 상황에서는 반드시 Task 또는 Task<T>를 반환해야 합니다.
using System;
using Systehttp://m.Threading.Tasks;
class Program
{
static async Task Main()
{
try
{
await DoSomethingAsync();
}
catch (Exception ex)
{
Console.WriteLine($"예외 처리됨: {ex.Message}");
}
}
static async Task DoSomethingAsync()
{
await Task.Delay(1000);
throw new InvalidOperationException("에러 발생!");
}
// 잘못된 예시
static async void WrongMethod()
{
await Task.Delay(500);
throw new Exception("이 예외는 Main에서 catch할 수 없습니다!");
}
}
●async void는 예외가 발생해도 호출한 쪽에서 catch 할 수 없습니다.
●Task를 반환하면 await로 흐름을 제어하고, 예외도 포착할 수 있습니다.
●단, async void는 이벤트 핸들러에서는 불가피하게 사용됩니다
(예: button.Click += async (s, e) => { ... }).

'CSharp > CShap Tip' 카테고리의 다른 글
null-coalescing 연산자 ??로 기본값 설정하기 (0) | 2025.04.03 |
---|---|
StringBuilder로 문자열 성능 향상시키기 (0) | 2025.04.02 |
확장 메서드(Extension Methods) 사용 (0) | 2025.03.24 |
프로젝트 이름 변경 (0) | 2024.04.20 |
C# 이란? (0) | 2022.10.05 |
댓글