Junior — Middle
Welke benaderingen en methoden worden gebruikt voor foutafhandeling in Kotlin-coroutines?
sobes.tech AI
Antwoord van AI
In Kotlin zijn er verschillende benaderingen voor het afhandelen van fouten in coroutines:
- try-catch binnen de coroutine — de eenvoudigste manier om uitzonderingen af te handelen. Je kunt de code binnen
launchofasyncin eentry-catchblok plaatsen.
launch {
try {
// code die een uitzondering kan veroorzaken
} catch (e: Exception) {
// foutafhandeling
}
}
- CoroutineExceptionHandler — een speciale handler die in de coroutine-context kan worden doorgegeven. Het vangt onbehandelde uitzonderingen in door
launchgestartte coroutines.
val handler = CoroutineExceptionHandler { _, exception ->
println("Gevangen $exception")
}
GlobalScope.launch(handler) {
throw RuntimeException("Fout")
}
- Foutafhandeling in async/await — bij gebruik van
asyncworden uitzonderingen niet meteen gegooid, maar bij het aanroepen vanawait(). Daarom moetawait()in eentry-catchworden geplaatst.
val deferred = async {
// code
throw Exception("Fout")
}
try {
deferred.await()
} catch (e: Exception) {
// afhandeling
}
- SupervisorJob en SupervisorScope — maken het mogelijk om fouten in kind-coroutines te isoleren, zodat een fout niet de hele scope van de ouder annuleert.
De keuze van de methode hangt dus af van de context en het type coroutine (launch of async).