Junior — Middle
Jak zaimplementować obsługę wyjątków w asynchronicznych korutynach?
sobes.tech AI
Odpowiedź od AI
W Kotlinie, do obsługi wyjątków w korutynach można używać bloków try-catch wewnątrz samej korutyny lub stosować specjalne konstrukcje, takie jak CoroutineExceptionHandler.
Przykład z try-catch wewnątrz korutyny:
launch {
try {
val result = someSuspendFunction()
println(result)
} catch (e: Exception) {
println("Błąd: ${e.message}")
}
}
Jeśli korutyna jest uruchamiana przez launch, nieobsłużone wyjątki są przekazywane do CoroutineExceptionHandler:
val handler = CoroutineExceptionHandler { _, exception ->
println("Obsłużony wyjątek: ${exception.message}")
}
GlobalScope.launch(handler) {
throw RuntimeException("Błąd w korutynie")
}
W ten sposób można elastycznie zarządzać błędami w kodzie asynchronicznym.