них висело - чуть что, сразу экзепшен, но спустя год использования такого подхода я понял что он слишком ногоотстреливающий. Какие есть альтернативы? Я пока что придумал чтобы функция возвращала nullable тип, где null будет означать ошибку. Но не очень красиво выходит это в тех функциях, которые возвращают Unit?.
Sealed Class'ы? Ну или типы Option/Either, если не нравится по какой-то причине конкретные типы делать.
А что за задача то решается? Откуда куча исключений
Можно попробовать на го перейти, на котлине будут исключения
Использовать монады Option, Either и Result
В продолжение: может, оставить всё же Unit? и оставить nullable-типы как индикатор неудачи? Просто... Я подумал над вариантом сделать через sealed-ы, но там inline class нельзя. А если делать inline class ResultOrNull (на подобие Result Котлина), то какой-то оверхэд получается. Что посоветуете?
Как вариант еще общий sealed класс с дженериком, если лень городить новые на каждый случай. Какой-нибудь: sealed class Result<out T> class Success<T>(val data: T): Result<T> class Error : Result<Nothing>
мы используем arrow-kt и их набор стандартный Either / Validated и т.д.
Обсуждают сегодня