Size: a a a

Kotlin Community

2020 April 21

VP

Vladimir Petrakovich in Kotlin Community
Чем вылетевший из функции RuntimeException отличается от лежащего в возвращённом оттуда Result мне не ясно
источник

AM

Andrew Mikhaylov in Kotlin Community
Vladimir Petrakovich
Тогда надо за любой RuntimeException наказывать, ибо оно может вылететь откуда угодно, в т.ч. из кода, который оперирует Result, если там окажется баг
Ну я же образно :) Я к тому, что пролетевший мимо эксепшн -- это совсем уж исключительная ситуация, удел которой -- отправиться в дефолтный обработчик.
источник

VP

Vladimir Petrakovich in Kotlin Community
Quantum Harmonizer
ну смысл result в том, что он несёт в себе checked exception как раз
Там, кажется, Throwable
источник

AM

Andrew Mikhaylov in Kotlin Community
Если код возвращает резалты, очевидно, что он декларирует конкретный способ сообщения об ошибках, не предполагающий их бросание.
источник

VP

Vladimir Petrakovich in Kotlin Community
А значит это отличная возможность по-тихому проглотить критичную ошибку (OOM, LinkageError и вот это всё)
источник

QH

Quantum Harmonizer in Kotlin Community
Vladimir Petrakovich
Там, кажется, Throwable
Ну так типа CheckedException не существует.
Но по факту RuntimeException имеет смысл кинуть, а checked — вернуть.
источник

VP

Vladimir Petrakovich in Kotlin Community
Quantum Harmonizer
Ну так типа CheckedException не существует.
Но по факту RuntimeException имеет смысл кинуть, а checked — вернуть.
По факту внутри Result может лежать всё, что угодно.
Когда мы делаем runCatching { foo() } нет вообще никаких гарантий, что там внутри будет checked exception.
источник

VP

Vladimir Petrakovich in Kotlin Community
Для ожидаемых ситуаций, которые надо обработать, надо не исключения использовать просто 🙂
источник

QH

Quantum Harmonizer in Kotlin Community
Vladimir Petrakovich
По факту внутри Result может лежать всё, что угодно.
Когда мы делаем runCatching { foo() } нет вообще никаких гарантий, что там внутри будет checked exception.
Дак я не говорю, что есть гарантии. Я говорю, что Result имеет смысл возвращать, чтобы явно задекларировать ошибку.
Но Either, конечно, круче.
источник

VP

Vladimir Petrakovich in Kotlin Community
Quantum Harmonizer
Дак я не говорю, что есть гарантии. Я говорю, что Result имеет смысл возвращать, чтобы явно задекларировать ошибку.
Но Either, конечно, круче.
Был бы смысл, если бы эту ошибку в Result было бы обрабатывать удобнее/надёжнее, чем если её просто выкинуть
источник

BP

Bogdan Panchenko in Kotlin Community
Danil Yudov
я ведь правильно помню, что kotlin.Result с 1.4 можно будет возвращать из функций? т.е. в новом проекте относительно спокойно можно уже завязаться на нём, вместо сторонних решений или своих костылей. а как-то отрубить его подчеркивание и ошибку в IDE можно? аргумент компилятору добавил, код компилится успешно, а вот ошибка в эдиторе не пропала..
Ещё нужно аннотацию OpIn, могу завтра посмотреть
источник

BP

Bogdan Panchenko in Kotlin Community
Vladimir Petrakovich
Был бы смысл, если бы эту ошибку в Result было бы обрабатывать удобнее/надёжнее, чем если её просто выкинуть
Ее и можно обработать, или что подразумевается под "обработать" ?
источник

BV

Boris Vanin in Kotlin Community
источник

BP

Bogdan Panchenko in Kotlin Community
Vladimir Petrakovich
Но ведь возвращать Result с исключением внутри - это практически то же самое. Только исключение ещё бонусом может пролететь мимо Result.
Обрабатывать ошибки с помощью Result, я думаю, может быть удобно, но зачем его возвращать - не очень понимаю.
Ну например результат вставки/удаления из бд, можно вручную обработать, но придется предугадывать все варианты
источник

D

Danil Yudov in Kotlin Community
Bogdan Panchenko
Ее и можно обработать, или что подразумевается под "обработать" ?
чот не, ни аргумент -Xopt-in=kotlin.RequiresOptIn, ни languageSettings.useExperimentalAnnotation("kotlin.RequiresOptIn") в сорс сете не помогли. та и ладно, не надо уже, я решил отказаться от его использования)
источник

AN

Alexander Nozik in Kotlin Community
А оно такое только в этой функции выдает. Этот SecretValue ваш или библиотечный?
источник

BV

Boris Vanin in Kotlin Community
Alexander Nozik
А оно такое только в этой функции выдает. Этот SecretValue ваш или библиотечный?
Всё моё
источник

BP

Bogdan Panchenko in Kotlin Community
Danil Yudov
чот не, ни аргумент -Xopt-in=kotlin.RequiresOptIn, ни languageSettings.useExperimentalAnnotation("kotlin.RequiresOptIn") в сорс сете не помогли. та и ладно, не надо уже, я решил отказаться от его использования)
Нужно на метод вешать, альт ентер должен подсказать
источник

BV

Boris Vanin in Kotlin Community
Alexander Nozik
А оно такое только в этой функции выдает. Этот SecretValue ваш или библиотечный?
Да, другого места я пока не видел
источник

AN

Alexander Nozik in Kotlin Community
Boris Vanin
Всё моё
Спасибо, буду поизучать
источник