Sobes.tech
Back to questions
Junior — Middle
71

Что такое CancelationException и в каких случаях она возникает?

Companies where asked
Movavi

Answer from AI

sobes.tech AI

CancellationException — это исключение в Android (и Java), которое возникает, когда операция или задача была отменена до её завершения. Обычно оно используется в асинхронных операциях, например, при работе с корутинами или задачами, которые можно отменить.

В Kotlin Coroutines, если корутина отменяется, то внутри неё может быть выброшено CancellationException, чтобы прервать выполнение и освободить ресурсы. Это нормальное поведение, и такое исключение не считается ошибкой, а сигналом об отмене.

Пример:

val job = CoroutineScope(Dispatchers.Default).launch {
    try {
        // Долгая операция
        delay(10000)
    } catch (e: CancellationException) {
        println("Корутина была отменена")
        throw e // важно пробросить исключение дальше
    }
}

job.cancel() // отменяем корутину

Таким образом, CancellationException возникает при отмене асинхронных операций и служит для корректного завершения таких задач.