Middle
Kodda await kullanarak istisnaları nasıl yakalayabilirsiniz?
sobes.tech yapay zeka
AI'dan gelen yanıt
await kullanan kodda oluşan istisnalar standart try...catch bloklarıyla yakalanır.
Örnek:
public async Task GetDataAsync()
{
try
{
// Hata oluşturabilecek asenkron bir çağrı
var result = await SomeService.FetchDataFromApiAsync();
// Başarılı sonucu işleme
}
catch (UnauthorizedAccessException ex)
{
// Belirli bir istisnayı işleme (örneğin, izin eksikliği)
Console.WriteLine($"Yetki hatası: {ex.Message}");
}
catch (HttpRequestException ex)
{
// HTTP isteği istisnasını işleme (örneğin, ağ sorunları)
Console.WriteLine($"HTTP isteği hatası: {ex.Message}");
}
catch (Exception ex)
{
// Diğer tüm yakalanmamış istisnaları işleme
Console.WriteLine($"Beklenmedik bir hata oluştu: {ex.Message}");
}
}
await ile işaretlenen asenkron operasyon bir istisna fırlatırsa, doğrudan kod akışının yürütülmesi kesilir ve kontrol, aynı asenkron fonksiyonda (veya onu çağıran fonksiyonda) ilgili catch bloğuna geçer. await olmadan, asenkron işlemin istisnası, görev/işlem tamamlanana ve sonucu/istisnası talep edilene kadar (örneğin, .Result veya .Wait() kullanılarak, ki bu önerilmez) çağıran fonksiyon tarafından yakalanmaz. await, aslında görevin içindeki istisnayı "açar" ve tekrar fırlatır, böylece try...catch ile yakalama mümkün olur.