Ну у меня это extension fun, которая в себе содержит несколько других, которые и логи пишут и ответ отправляют и мониторинг делают
Читать полностью…А на все "не получилось оформить заказ" ты пользаку пишешь"чет не то, попробуйте позже"
Читать полностью…Да, но A это завернет в ошибки B, а B в ошибки C и так далее. И на уровне A тебе надо знать только об ошибках B, а не о непонятных RuntimeException хз откуда
Читать полностью…не, я ж говорю, там про композицию
я про случай когда есть A.foo(), B.bar(), C.do()
foo() вызывает bar(), а тот вызывает do()
есть контроллер, который вызывает A.foo() - Either с ошибкой будет прокидываться из C.do() в контроллер по цепочке в го стиле?)
я делаю интерфейс
interface UserRepository {
fun findUser(id: UUID): User?
}
мой User не зависим от реализации
а еще жук для котлин умеет генерить data классы с правильной nullability и тогда без проблем работает .fetch(mapper())
При обычных exception у тебя контроллер может получить ошибку репозитория что бд не доступна и должен на это что-то пользователю сказать. Тут он получит абстрактное "не удалось оформить заказ" от сервиса заказов
Читать полностью…Если я правильно понял вопрос.
fun foo(n: Int): Either<Error, String> = either {
val s = f(n).bind()
val t = g(s).bind()
t.summarize()
}