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.