Sobes.tech
Назад к вопросам
Junior — Middle
68

Можете объяснить, что такое исключение CancellationException и в каких ситуациях оно используется?

Компании, где спрашивали
ВанТу Ворк

Ответ от нейросети

sobes.tech AI

CancellationException — это специальное исключение в Kotlin Coroutines, которое сигнализирует о том, что корутина была отменена. Оно используется для управления отменой асинхронных задач и обычно не считается ошибкой, а нормальным способом прервать выполнение.

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

Пример использования:

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

// Отмена корутины
job.cancel()

Таким образом, CancellationException — это механизм, который помогает управлять жизненным циклом корутин и корректно реагировать на их отмену.