как и ээээ "обычный" результат. И их надо как-то возвращать.
Either? Try?
лучше не пропагандировать исключения, лучше локально их обрабатывать и возвращать осмысленный результат, а не внутреннее исключение, которое потребителю контракта ниочем не говорит
И да и нет (в контексте вопроса). Есть ошибки, которые можно предусмотреть, есть которые нельзя. Те что можно "предусмотреть", лучше превращать в бизнесовые и делать Either<MyServiceError, MyBusinessValue> - результат. Остаются те что нельзя предугадать (все не переловишь). И тут уже будет F<Throwable, Either<MyServiceError, MyBusinessValue>>. Где F какая-то асинхронная хрень или ну хотя бы Try. Но в целом ошибки сложно и больно везде (есть пара языков с надеждами, но там еще потыркать надо реализации). Вот еще тред (чтобы увеличить масштабы бедствия) на злобу дня https://twitter.com/backendsecret/status/1122054948584189952.
Обсуждают сегодня