Sobes.tech
Junior — Middle

Wie erfolgt die Fehlerbehandlung im Rahmen von CoroutineScope in Kotlin?

sobes.tech KI

Antwort von AI

Fehlerbehandlung in CoroutineScope in Kotlin erfolgt durch Ausnahme-Mechanismen und spezielle Fehlerbehandler.

Hauptmethoden:

  1. try-catch innerhalb der Coroutine Der Code der Coroutine kann in einen try-catch-Block eingeschlossen werden, um Ausnahmen lokal zu behandeln.
launch {
    try {
        // Code, der eine Ausnahme auslösen kann
    } catch (e: Exception) {
        // Fehlerbehandlung
    }
}
  1. CoroutineExceptionHandler Dies ist ein spezieller Handler, der im Coroutine-Kontext übergeben werden kann, um unbehandelte Ausnahmen in Coroutines, die mit launch gestartet wurden (nicht mit async), global zu behandeln.
val handler = CoroutineExceptionHandler { _, exception ->
    println("Gefangen $exception")
}

val scope = CoroutineScope(Dispatchers.Main + handler)
scope.launch {
    throw RuntimeException("Fehler")
}
  1. Fehlerbehandlung bei async Bei async werden Ausnahmen nicht sofort ausgelöst, sondern beim Aufruf von await(), daher muss die Fehlerbehandlung dort erfolgen.
val deferred = async {
    throw RuntimeException("Fehler")
}
try {
    deferred.await()
} catch (e: Exception) {
    // Behandlung
}

Daher hängt die Wahl der Methode vom Coroutine-Typ und dem gewünschten Fehlerbehandlungsniveau ab.