Size: a a a

Kotlin Community

2020 April 21

MR

Max Rovkin in Kotlin Community
Roman Elizarov
Раз нету стек-трейса то это какой-то баг в андроид-райнтайме или где-то есть код, который поймал исключение и вывел его в лог, но забыл записать стек-трейс.
может есть идеи куда копнуть? А то я уже отчаялся 🙁
источник

RE

Roman Elizarov in Kotlin Community
Я по Андроиду не большой специалист. Надо в профильных чатах спросить почему может теряться stack-trace и что с этим делать. Разве что можно попробовать свой собственный обработчик потерянных исключений поставить всюду (CoroutineExceptionHandler или может даже нужно uncaughtExceptionHandler на все потоки) и в надежное место писать исключение вместе со стек-трейсом.
источник

MR

Max Rovkin in Kotlin Community
Roman Elizarov
Я по Андроиду не большой специалист. Надо в профильных чатах спросить почему может теряться stack-trace и что с этим делать. Разве что можно попробовать свой собственный обработчик потерянных исключений поставить всюду (CoroutineExceptionHandler или может даже нужно uncaughtExceptionHandler на все потоки) и в надежное место писать исключение вместе со стек-трейсом.
попробую CoroutineExceptionHandler
источник

PS

Peter Samokhin in Kotlin Community
господа, я что-то никак dokka победить не могу (или градл):
не хочет импортировать в отдельном скрипте org.jetbrains.dokka.gradle.DokkaTask,
ругается сразу на Unresolved reference: jetbrains

- был дефолтно указан в отдельном dokka.gradle, который в каждом build.gradle.kts у субпроджектов подключался через apply(from =, точнее даже не напрямую, а ещё через один, и всё было ок
- я решил этот (последний оставшийся не на котлине) скрипт переписать, и всё начало падать
- теперь указал в classpath в главном build.gradle.kts, пляшу с бубном вокруг этого
- если вставить весь блок напрямую в этот builg.gradle.kts в каждом субпроджекте, то всё ок

но не делать же так в самом деле :(
apply(plugin = в этом отдельном файле не помогает, plugins { id вообще пишет, что так нельзя, используйте apply

чяднт?
источник

MR

Max Rovkin in Kotlin Community
Roman Elizarov
Я по Андроиду не большой специалист. Надо в профильных чатах спросить почему может теряться stack-trace и что с этим делать. Разве что можно попробовать свой собственный обработчик потерянных исключений поставить всюду (CoroutineExceptionHandler или может даже нужно uncaughtExceptionHandler на все потоки) и в надежное место писать исключение вместе со стек-трейсом.
кстати, uncaughtExceptionHandler я уже пробовал, не помогает
источник

RE

Roman Elizarov in Kotlin Community
Max Rovkin
кстати, uncaughtExceptionHandler я уже пробовал, не помогает
Может не во всех потоках. Вообще, по умолчанию, CoroutineExceptionHandler именно туда отдает исключения
источник

PS

Peter Samokhin in Kotlin Community
Peter Samokhin
господа, я что-то никак dokka победить не могу (или градл):
не хочет импортировать в отдельном скрипте org.jetbrains.dokka.gradle.DokkaTask,
ругается сразу на Unresolved reference: jetbrains

- был дефолтно указан в отдельном dokka.gradle, который в каждом build.gradle.kts у субпроджектов подключался через apply(from =, точнее даже не напрямую, а ещё через один, и всё было ок
- я решил этот (последний оставшийся не на котлине) скрипт переписать, и всё начало падать
- теперь указал в classpath в главном build.gradle.kts, пляшу с бубном вокруг этого
- если вставить весь блок напрямую в этот builg.gradle.kts в каждом субпроджекте, то всё ок

но не делать же так в самом деле :(
apply(plugin = в этом отдельном файле не помогает, plugins { id вообще пишет, что так нельзя, используйте apply

чяднт?
чёрт, понял в чём проблема сразу, как написал :D
стандартный косяк, нужен был ещё apply(plugin = "org.jetbrains.kotlin.jvm")
источник

PS

Peter Samokhin in Kotlin Community
а, нет, в idea всё подсветилось, но градл не собирает всё равно
источник

MR

Max Rovkin in Kotlin Community
Roman Elizarov
Может не во всех потоках. Вообще, по умолчанию, CoroutineExceptionHandler именно туда отдает исключения
проставил всем скоупам CoroutineExceptionHandler но ошибка пролетела мимо.
источник

AN

Alexander Nozik in Kotlin Community
Boris Vanin
Так метод не зааннатирован!
По-моему DSLмаркер внутрь тоже работает
источник

RE

Roman Elizarov in Kotlin Community
Max Rovkin
проставил всем скоупам CoroutineExceptionHandler но ошибка пролетела мимо.
Очень мистично. Значит Android её где-то ловит, без трейса выводит в лог и крешится. Нет идей где это может быть.
источник

AN

Alexander Nozik in Kotlin Community
Мысль. Если это не закрыли, то при вызове cancel раньше можно было указать причину, чтобы она прокидывалась в логи. Попробуйте указать разные причины в разных отменах
источник

QH

Quantum Harmonizer in Kotlin Community
я чат не читал, но… бряку в конструктор нужного эксепшона
источник

AN

Alexander Nozik in Kotlin Community
Alexander Nozik
Мысль. Если это не закрыли, то при вызове cancel раньше можно было указать причину, чтобы она прокидывалась в логи. Попробуйте указать разные причины в разных отменах
Да, там можно свой инстанс CancellationException воткнуть
источник

AN

Alexander Nozik in Kotlin Community
Quantum Harmonizer
я чат не читал, но… бряку в конструктор нужного эксепшона
Не получится, он генерится на любую валидную отмену
источник

MR

Max Rovkin in Kotlin Community
Alexander Nozik
Мысль. Если это не закрыли, то при вызове cancel раньше можно было указать причину, чтобы она прокидывалась в логи. Попробуйте указать разные причины в разных отменах
спасибо, так тоже попробую
источник

VP

Vladimir Petrakovich in Kotlin Community
Bogdan Panchenko
Ее и можно обработать, или что подразумевается под "обработать" ?
Совершить какие-то осмысленные действия в ответ на конкретную ошибку. Банальный try-catch тут подходит лучше всего.
источник

BV

Boris Vanin in Kotlin Community
Alexander Nozik
По-моему DSLмаркер внутрь тоже работает
Работает, конечно, но вроде как только для помеченных аннотацией
источник

AN

Alexander Nozik in Kotlin Community
Boris Vanin
Работает, конечно, но вроде как только для помеченных аннотацией
Я до сих пор не сильно понимаю, как он работает.
источник

BP

Bogdan Panchenko in Kotlin Community
Vladimir Petrakovich
Совершить какие-то осмысленные действия в ответ на конкретную ошибку. Банальный try-catch тут подходит лучше всего.
ну транзакция может кинуть два вида исключений, но еще может оборваться конекшен, не валидные параметры etc. И в разных местах хочется по разному обработать.
Это редкие кейсы, но они есть.
источник