Ответ
CancellationException — это исключение, которое выбрасывается при отмене корутины. Оно сигнализирует, что выполнение было прервано, но не указывает на ошибку.
Пример:
val job = launch {
try {
delay(1000)
println("Work done") // Не выполнится, если корутину отменят
} catch (e: CancellationException) {
println("Coroutine was cancelled") // Ловим отмену
throw e // Перебрасываем, чтобы не подавлять отмену
}
}
delay(500)
job.cancel() // Вызовет CancellationException
Важно:
- Не подавляйте исключение без
throw e, иначе корутина может продолжить работу. - Используется в
withContext,delayи других suspend-функциях. - Отличается от других исключений — не приводит к краху, если не перехвачено.