Как перехватывать Exception в Coroutine. Часть 5 (финал)
Разберемся с билдером async
Рабочие способы обработки ошибки:
• внутри async
async {
try {
throw Exception()
} catch(e: Exception) {}
}
• с помощью try-catch, если async верхнего уровня
Ошибка выбрасывается во время вызова await()
runBlocking {
val job = scope.async {
throwError()
}
tryCatch {
job.await()
}
}
Что будет, если не обработать:
ошибка будет распространяться родительским корутинам и Scope, пока не попадет в CoroutineExceptionHandler или Thread.UncaughtExceptionHandler
....
в комментариях оставлю ссылку на Kotlin Playground с тестами, на которых можно проверить свое чутье — где и кем будет перехвачена ошибка
Post #77
2.87K