Нужно ли всегда при использовании try-catch над coroutineScope отдельно обрабатывать CancellationException?
Не совсем понимаю: пусть есть такой код
suspend fun example() {
try {
coroutineScope {
doWork()
}
} catch (e: Throwable) {
//выполняем тут какую-нибудь логику
}
}
suspend fun doWork() {
throw Exception()
}
Должен ли я всегда добавлять отдельную catch-ветку для перепробрасывания CancellationException на случай, если моя функция example будет вызвана из другого скоупа и может быть отменена?
Если да, то, получается, нужно при каждом вызове лямбды coroutineScope, если он оборачивается в try-catch, отдельно обрабатывать ветку с CancellationException?