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:
- 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
}
}
- 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")
}
- 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.