Ответ
Да, работал. CoroutineExceptionHandler используется для обработки необработанных исключений в корутинах. Он добавляется в контекст корутины через CoroutineScope или launch/async.
Пример:
val handler = CoroutineExceptionHandler { _, exception ->
println("Caught $exception")
}
val scope = CoroutineScope(Job() + handler)
scope.launch {
throw RuntimeException("Failed!")
}
Нюансы:
- Работает только для необработанных исключений (не перехваченных
try/catch). - В
asyncисключение не выбросится сразу — нужно вызыватьawait(). - Не сработает для
SupervisorJob, если ошибка в дочерней корутине. - Лучше логировать или уведомлять пользователя, а не подавлять ошибки.