Middle
Kodda await istifadə edərək istisnaları necə tutmaq olar?
sobes.tech Süni İntellekt
AI-dan cavab
await istifadə edən kodda istisnalar standart try...catch blokları ilə tutulur.
Nümunə:
public async Task GetDataAsync()
{
try
{
// Xəta törədə biləcək asinxron əməliyyatın çağırılması
var result = await SomeService.FetchDataFromApiAsync();
// Uğurlu nəticənin işlənməsi
}
catch (UnauthorizedAccessException ex)
{
// Xüsusi istisnanın işlənməsi (məsələn, icazə olmaması)
Console.WriteLine($"İcazə xətası: {ex.Message}");
}
catch (HttpRequestException ex)
{
// HTTP sorğu istisnasının işlənməsi (məsələn, şəbəkə problemləri)
Console.WriteLine($"HTTP sorğu xətası: {ex.Message}");
}
catch (Exception ex)
{
// Digər bütün işlənməyən istisnaların işlənməsi
Console.WriteLine($"Qeyri-adi xəta baş verdi: {ex.Message}");
}
}
Əgər await ilə göstərilən asinxron əməliyyat istisna atarsa, birbaşa kod axını dayandırılır və nəzarət müvafiq catch blokuna keçir, eyni asinxron funksiyada (və ya onu çağıran). await olmadan, asinxron əməliyyatın istisnası çağıran funksiya tərəfindən tutulmayacaq, ta ki, tapşırıq/əməliyyat tamamlanıb və onun nəticəsi/istisnası tələb olunana qədər (məsələn, .Result və ya .Wait() ilə, bu tövsiyə edilmir). await faktiki olaraq tapşırıqdakı istisnanı "açır" və yenidən atır, bu da onu adi try...catch ilə tutmağa imkan verir.