Sobes.tech
Junior — Middle

Təcrübənizdə, korutinlər daxilində istisnaların idarə olunması necə həyata keçirilir?

sobes.tech Süni İntellekt

AI-dan cavab

Android-də korutinlərdə istisnaların idarə olunması adətən korutin daxilində try-catch blokları və ya CoroutineExceptionHandler kimi xüsusi mexanizmlər vasitəsilə həyata keçirilir.

Əgər korutin daxilində istisna baş verərsə, onu aşağıdakı kimi tutmaq olar:

launch {
    try {
        // istisna törədə biləcək kod
    } catch (e: Exception) {
        // istisna ilə işləmə
    }
}

Qeyri-əldə olunan istisnaların qlobal idarə olunması üçün CoroutineExceptionHandler istifadə oluna bilər:

val handler = CoroutineExceptionHandler { _, exception ->
    println("Yekun $exception")
}

GlobalScope.launch(handler) {
    throw RuntimeException("Xəta")
}

Əhəmiyyətli qeyd etmək lazımdır ki, launch ilə başlayan korutinlərdə istisnalar idarəçiyə ötürülür, async ilə başlayanlarda isə istisna await() çağırıldıqda baş verir.

Bu səbəbdən, async istifadə edərkən, await() çağırışını try-catch ilə əhatə etmək lazımdır ki, xətalar idarə olunsun.