J: Как ПРАВИЛЬНО обрабатывать ошибки в Kotlin и Java? Что я понял за 15 лет программирования - видео HD
Для существования нашего сайта необходим показ рекламы. Просим отнестись с пониманием и добавить сайт в список исключений вашей программы для блокировки рекламы (AdBlock и другие).
12n.ru 18415 роликов
Как ПРАВИЛЬНО обрабатывать ошибки в Kotlin и Java? Что я понял за 15 лет программирования - видео.
Рассказываем, как удобнее всего обрабатывать исключения и нештатные ситуации в Kotlin и других языках и почему стандартные исключения не всегда лучший вариант.
Ссылки на материалы:
Checked exceptions in Kotlin https://kotlinlang.org/docs/java-to-k...
Either (ArrowKt) https://arrow-kt.io/learn/typed-error...
Railway Oriented Programming https://habr.com/ru/articles/339606/
Either для Java (Vavr) https://docs.vavr.io/#_either
Обработка ошибок в Rust https://doc.rust-lang.org/book/ch09-0...
Result для Python (Returns)https://returns.readthedocs.io/en/lat...
Правило для Detekt https://detekt.dev/docs/rules/potenti...
Тайм-коды для самых нетерпеливых:00:00 Введение00:30 Базовый пример01:41 Способы обработки ошибок03:15 Проверяемые VS Непроверяемые исключения06:26 Код возврата как волшебная пилюля07:20 Больше данных! Как передать инфо об ошибке08:56 Успех — не ошибка, а много ошибок — не успех09:44 Мощь Arrow11:40 Railway Oriented Programming13:27 Альтернатива из стандартной библиотеки Kotlin13:59 Другие языки программирования14:14 Исключения тоже нужны15:31 Лечим забывчивость (и потерянный код возврата)15:55 Заключение
Поваренная книга Дядюшки Боба: howto.stringconcat.ru/cleanar... Телеграмм-канал с кучей полезной информации: t.me/stringconcat
sealed interface PaymentResult
data class Success(...): PaymentResult
sealed interface Error: PaymentResult
data class AccountNotFound(...): Error
и так далее
В таком случае нам не нужно будет при необходимости маппинга ошибки в какой-либо объект делать специфичный кейс для состояния Success, ведь мы просто можем передать ошибку с типом PaymentResult.Error
Читать порой сложно такое. Пока не знаю как сделать красиво.
Что касается необрабатываемых ошибок, то на маленьком проекте лучше использовать их, так как тут сам написал — сам обработал.
Ну и если не чистая архитектура, тогда ошибки можно еще и наследовать от нужного типа (unporcessable, notfound, итд). И в обработчике ошибок ловить по дефолту нужный тип.