Sobes.tech
Junior — Middle

Kuidas toimub vigade käsitlemine Kotlinis CoroutineScope raames?

sobes.tech AI

Vastus AI-lt

Händling av fel i CoroutineScope i Kotlin sker med hjälp av undantagsmekanismer och specialiserade felhanterare.

Huvudmetoder:

  1. try-catch inom coroutine Du kan omsluta din coroutine-kod i en try-catch-block för lokal felhantering.
launch {
    try {
        // kod som kan kasta ett undantag
    } catch (e: Exception) {
        // felhantering
    }
}
  1. CoroutineExceptionHandler Detta är en specialhanterare som kan passeras in i coroutine-konteksten för att globalt hantera ohanterade undantag i coroutines som startas med launch (men inte med async).
val handler = CoroutineExceptionHandler { _, exception ->
    println("Fångad $exception")
}

val scope = CoroutineScope(Dispatchers.Main + handler)
scope.launch {
    throw RuntimeException("Fel")
}
  1. Felhantering i async I fallet med async, kastas undantag inte direkt, utan vid anrop av await(), så felhantering bör göras där.
val deferred = async {
    throw RuntimeException("Fel")
}
try {
    deferred.await()
} catch (e: Exception) {
    // hantering
}

Således, valet av metod beror på coroutine-typen och önskad nivå av felhantering.