Size: a a a

Kotlin Community

2020 January 22

過酸化水素 in Kotlin Community
Сейчас не могу.
источник

КР

Кирилл Романенко in Kotlin Community
Есть ли возможность безопасно отменять корутину, чтобы не летел экзепшен JobCancellationException: Job was cancelled? Я пытался проверять if (isActive && !isCanceled), но всё равно периодически экзепшен проскакивает.
источник

VP

Vladimir Petrakovich in Kotlin Community
Кирилл Романенко
Есть ли возможность безопасно отменять корутину, чтобы не летел экзепшен JobCancellationException: Job was cancelled? Я пытался проверять if (isActive && !isCanceled), но всё равно периодически экзепшен проскакивает.
А чем так не безопасно? Его просто ловить не надо.
источник

КР

Кирилл Романенко in Kotlin Community
Vladimir Petrakovich
А чем так не безопасно? Его просто ловить не надо.
Ну тем, что мне надо чтобы при любом раскладе не вылетал экзепшен.
источник

VP

Vladimir Petrakovich in Kotlin Community
Кирилл Романенко
Ну тем, что мне надо чтобы при любом раскладе не вылетал экзепшен.
Ну реальность такова, что из любого suspend кода может вылететь CancellationException, это норма и надо жить с этим
источник

КР

Кирилл Романенко in Kotlin Community
Vladimir Petrakovich
Ну реальность такова, что из любого suspend кода может вылететь CancellationException, это норма и надо жить с этим
Но он даже в трай-кетче не отлавливается, в этом проблема.
источник

VP

Vladimir Petrakovich in Kotlin Community
Кирилл Романенко
Но он даже в трай-кетче не отлавливается, в этом проблема.
Не может быть такого. Может быть, что отменяется родительская джоба, и тут да, try-catch не поможет.
источник

AM

Andrew Mikhaylov in Kotlin Community
Vladimir Petrakovich
Ну реальность такова, что из любого suspend кода может вылететь CancellationException, это норма и надо жить с этим
Кирилл о повторной отмене джобы
источник

AM

Andrew Mikhaylov in Kotlin Community
Кирилл Романенко
Но он даже в трай-кетче не отлавливается, в этом проблема.
А вот это странненько, вроде ловится
источник

VP

Vladimir Petrakovich in Kotlin Community
Andrew Mikhaylov
Кирилл о повторной отмене джобы
Это как? 🤔
источник

AM

Andrew Mikhaylov in Kotlin Community
Vladimir Petrakovich
Это как? 🤔
Ну,
job.cancel()
job.cancel()

Второй кидает исключение, а иногда лучше б был noop.
источник

VP

Vladimir Petrakovich in Kotlin Community
Andrew Mikhaylov
Ну,
job.cancel()
job.cancel()

Второй кидает исключение, а иногда лучше б был noop.
Хм, внезапно
источник

КР

Кирилл Романенко in Kotlin Community
Вот кстати да. Походу второй кидает экзепшен, который я не могу отловить в трай-кетче. И флаги к тому времени видимо не успеваю измениться (isActive, isCancelled)
источник

AM

Andrew Mikhaylov in Kotlin Community
Наоборот, флаги скорее всего успевают измениться между проверкой и последующей отменой.
источник

КР

Кирилл Романенко in Kotlin Community
Крч буду просто занулять джобу, и всё.)
источник

AM

Andrew Mikhaylov in Kotlin Community
Это неплохой вариант
источник

VP

Vladimir Petrakovich in Kotlin Community
Andrew Mikhaylov
Ну,
job.cancel()
job.cancel()

Второй кидает исключение, а иногда лучше б был noop.
Вроде не должен
https://pl.kotl.in/nEBjYebO0
источник

КР

Кирилл Романенко in Kotlin Community
Но у меня же почему-то падает, именно с указанной выше ошибкой
источник

VP

Vladimir Petrakovich in Kotlin Community
Кирилл Романенко
Но у меня же почему-то падает, именно с указанной выше ошибкой
Пример в студию
источник

VP

Vladimir Petrakovich in Kotlin Community
Если там в stacktrace есть job.cancel(), это не значит, что исключение вылетело оттуда (что немного печально)
источник