Middle
Hogyan lehet a kódban az await segítségével kivételeket elkapni?
sobes.tech MI
Válasz az MI-től
Az await-et használó kódban keletkező kivételeket a szokásos try...catch blokkokkal lehet elkapni.
Példa:
public async Task GetDataAsync()
{
try
{
// Aszinkron művelet hívása, amely kivételt okozhat
var result = await SomeService.FetchDataFromApiAsync();
// Sikeres eredmény feldolgozása
}
catch (UnauthorizedAccessException ex)
{
// Specifikus kivétel kezelése (pl. jogosultság hiánya)
Console.WriteLine($"Engedélyhiba: {ex.Message}");
}
catch (HttpRequestException ex)
{
// HTTP kérés kivétel kezelése (pl. hálózati problémák)
Console.WriteLine($"HTTP kérés hiba: {ex.Message}");
}
catch (Exception ex)
{
// Bármilyen más nem kezelt kivétel kezelése
Console.WriteLine($"Váratlan hiba történt: {ex.Message}");
}
}
Ha az await-tel jelölt aszinkron művelet kivételt dob, a közvetlen kód végrehajtása megszakad, és a vezérlés átkerül a megfelelő catch blokkba ugyanabban a aszinkron függvényben (vagy a hívóban). await nélkül a kivétel nem lesz elfogva a hívó függvény által, amíg a feladat/művelet nem fejeződik be, és az eredmény/kivétel nem kérhető (pl. .Result vagy .Wait(), amit nem javasolt). Az await valójában "kibontja" a kivételt a feladatból és újra dobja, lehetővé téve a szokásos try...catch-tel való elfogást.