Ответ
В корутине можно использовать CoroutineExceptionHandler для обработки необработанных исключений. Он устанавливается в контексте корутины через CoroutineScope или при запуске корутины с помощью launch/async.
Пример:
val handler = CoroutineExceptionHandler { _, exception ->
println("Caught $exception")
}
// Вариант 1: через scope
val scope = CoroutineScope(Job() + handler)
scope.launch {
throw RuntimeException("Oops!")
}
// Вариант 2: при запуске
GlobalScope.launch(handler) {
throw RuntimeException("Oops!")
}
Важно: CoroutineExceptionHandler работает только для корутин, запущенных через launch. Для async исключения будут пойманы при вызове await().