Sobes.tech
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.