Sobes.tech
Junior — Middle

Hoe wordt de foutafhandeling binnen coroutines in uw ervaring uitgevoerd?

sobes.tech AI

Antwoord van AI

De foutafhandeling in coroutines op Android wordt meestal gedaan met behulp van try-catch-blokken binnen de coroutine zelf of met speciale mechanismen zoals CoroutineExceptionHandler.

Als er een uitzondering optreedt binnen een coroutine, kan deze als volgt worden opgevangen:

launch {
    try {
        // code die een uitzondering kan veroorzaken
    } catch (e: Exception) {
        // foutafhandeling
    }
}

Voor globale afhandeling van onhandelde uitzonderingen kan CoroutineExceptionHandler worden gebruikt:

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

GlobalScope.launch(handler) {
    throw RuntimeException("Fout")
}

Het is belangrijk om te onthouden dat uitzonderingen in coroutines die via launch worden gestart, worden doorgegeven aan de handler, terwijl in coroutines die via async worden gestart, de uitzondering wordt opgeworpen bij het aanroepen van await().

Daarom moet bij gebruik van async het aanroepen van await() worden omgeven door een try-catch om fouten af te handelen.