Junior — Middle
Jak w Twoim doświadczeniu realizowana jest obsługa wyjątków wewnątrz korutyn?
sobes.tech AI
Odpowiedź od AI
Obsługa wyjątków w korutynach na Androidzie zazwyczaj odbywa się za pomocą bloków try-catch wewnątrz samej korutyny lub za pomocą specjalnych mechanizmów, takich jak CoroutineExceptionHandler.
Jeśli w korutynie wystąpi wyjątek, można go złapać w następujący sposób:
launch {
try {
// kod, który może wyrzucić wyjątek
} catch (e: Exception) {
// obsługa wyjątku
}
}
Dla globalnego obsługiwania nieobsłużonych wyjątków można użyć CoroutineExceptionHandler:
val handler = CoroutineExceptionHandler { _, exception ->
println("Złapano $exception")
}
GlobalScope.launch(handler) {
throw RuntimeException("Błąd")
}
Ważne jest, aby pamiętać, że wyjątki w korutynach uruchomionych przez launch są przekazywane do obsługi, natomiast w korutynach uruchomionych przez async, wyjątek zostanie rzucony podczas wywołania await().
Dlatego przy użyciu async należy opakować wywołanie await() w try-catch, aby obsłużyć błędy.