Kotlin Rich Errors
Вы, скорее всего, слышали про будущую фичу в Kotlin под названием Rich Errors, которая может кардинально изменить подход к обработке ошибок. Но многие не поняли: а в чём, собственно, отличия от sealed class или checked exceptions в Java?
Давайте разберёмся.
На мой взгляд, главная фича — это компактность и простота.
Например, если у нас есть такая функция:
Тогда можем написать выражение:
И мы не получим nullable-результат, метод charge выполнится только если fetchUser вернул успешный результат. И не нужно запоминать всякие операторы по типу fold в Result и так далее.
В отличие от sealed-классов, в Rich Errors ошибка и успешный результат не имеют общего родителя. При этом error class не является наследником Any, а наследуется от специального типа Error.
Также многих может ввести в заблуждение синтаксис, ведь это очень похоже на union-типы в других языках, но это не они.
Мы не можем использовать любой тип в правой части. Разрешается использовать только Error-классы, при этом их может быть больше одного. А основной тип может быть только один.
Подробнее узнать про Rich Errors можно в этом докладе.
А вы ждёте эту фичу или считаете, что это бесполезный сахар?
Вы, скорее всего, слышали про будущую фичу в Kotlin под названием Rich Errors, которая может кардинально изменить подход к обработке ошибок. Но многие не поняли: а в чём, собственно, отличия от sealed class или checked exceptions в Java?
Давайте разберёмся.
На мой взгляд, главная фича — это компактность и простота.
Например, если у нас есть такая функция:
fun fetchUser(): User | FetchingError
Тогда можем написать выражение:
fetchUser()?.charge(amount = 10.0)
И мы не получим nullable-результат, метод charge выполнится только если fetchUser вернул успешный результат. И не нужно запоминать всякие операторы по типу fold в Result и так далее.
В отличие от sealed-классов, в Rich Errors ошибка и успешный результат не имеют общего родителя. При этом error class не является наследником Any, а наследуется от специального типа Error.
Также многих может ввести в заблуждение синтаксис, ведь это очень похоже на union-типы в других языках, но это не они.
Мы не можем использовать любой тип в правой части. Разрешается использовать только Error-классы, при этом их может быть больше одного. А основной тип может быть только один.
Подробнее узнать про Rich Errors можно в этом докладе.
А вы ждёте эту фичу или считаете, что это бесполезный сахар?
👍15👾8🥱2