Size: a a a

Saint P Ruby Community

2020 February 07

A

Alex in Saint P Ruby Community
На 1 и 2 ответ — да.
источник

AD

Anton Davydov in Saint P Ruby Community
на первый отвечу, что да, больше не ожиданных ситуаций от исключений появляется
источник

A

Alex in Saint P Ruby Community
И исключения и резалты могут (и должны) применяться вместе, это разные инструменты для решения разных задач. Логика только на исключениях это так же странно, как полный отказ от исключений.
источник

AD

Anton Davydov in Saint P Ruby Community
все так
источник

NS

Nikita Shilnikov in Saint P Ruby Community
а что такое «отказ от исключений» в языке, в котором они есть?
источник

AG

Alex G in Saint P Ruby Community
Мы вчера смотрели большое нагруженное приложение, легаси, большая команда. Очень критично не падать и не пропускать ошибки в прод.
И там именно из-за этой критичности везде используются исключения. Чтобы проще ловить и чище "happy path"

Аргументы про непредсказуемость - слабые. Точно так же можно забывать обработать Failure и пропустить ее туда, куда не следовало бы.
Это про дисциплину, внимательность и опыт.
источник

A

Alex in Saint P Ruby Community
Nikita Shilnikov
а что такое «отказ от исключений» в языке, в котором они есть?
Это значит, что бизнес-логика приложения полностью реализована на резалт-обжектах, все стандартные ошибки отлавливаются по месту и превращаются в резалтобжекты, которые возвращаются в качестве значений.
источник

A

Alex in Saint P Ruby Community
Это звучит странно, но я такое встречал.
источник

NS

Nikita Shilnikov in Saint P Ruby Community
а, ну я конечно же так и делаю
источник

NS

Nikita Shilnikov in Saint P Ruby Community
я просто думал отказ это когда в вебсервере, например, нету перезвата ошибки и он падает, когда в коде приложения nomethoderror случается
источник

AD

Anton Davydov in Saint P Ruby Community
Alex G
Мы вчера смотрели большое нагруженное приложение, легаси, большая команда. Очень критично не падать и не пропускать ошибки в прод.
И там именно из-за этой критичности везде используются исключения. Чтобы проще ловить и чище "happy path"

Аргументы про непредсказуемость - слабые. Точно так же можно забывать обработать Failure и пропустить ее туда, куда не следовало бы.
Это про дисциплину, внимательность и опыт.
аргумент про не предсказуемость в том, что ты не знаешь от куда прилетит исключение. это может быть одна вложенность, а может прилететь через 5 разных зависимостей
источник

AD

Anton Davydov in Saint P Ruby Community
Nikita Shilnikov
я просто думал отказ это когда в вебсервере, например, нету перезвата ошибки и он падает, когда в коде приложения nomethoderror случается
еще надо сделать так, что бы база исключения не слала вообще, будет тоже хорошо
источник

AG

Alex G in Saint P Ruby Community
Anton Davydov
аргумент про не предсказуемость в том, что ты не знаешь от куда прилетит исключение. это может быть одна вложенность, а может прилететь через 5 разных зависимостей
точно так же и с ошибкой же, нет?
источник

NS

Nikita Shilnikov in Saint P Ruby Community
Anton Davydov
еще надо сделать так, что бы база исключения не слала вообще, будет тоже хорошо
не совсем понятно. Зачем ей «слать исключения»?
источник

AD

Anton Davydov in Saint P Ruby Community
нет, там она пробрасывается через каждый слой зависимостей явно, это значит, что ее можно отследить
источник

AG

Alex G in Saint P Ruby Community
Anton Davydov
нет, там она пробрасывается через каждый слой зависимостей явно, это значит, что ее можно отследить
но и исключение тоже можно
источник

AD

Anton Davydov in Saint P Ruby Community
Alex G
но и исключение тоже можно
как? если у тебя в A -> B -> C в C может упасть что-то, но ловиться будет только в A
источник

A

Alex in Saint P Ruby Community
Nikita Shilnikov
я просто думал отказ это когда в вебсервере, например, нету перезвата ошибки и он падает, когда в коде приложения nomethoderror случается
это не так уж плохо, если сравненивать этот кейс с ситуацией, когда приложение с испорченным стейтом продолжает жить
источник

AD

Anton Davydov in Saint P Ruby Community
с объектами их придется явно передавать
источник

AG

Alex G in Saint P Ruby Community
Anton Davydov
как? если у тебя в A -> B -> C в C может упасть что-то, но ловиться будет только в A
а как в Failure, если Failure пробрасывается сразу дальше? Оно пройдет в явном виде через весь код, но если ты его не ожидаешь, то оно всплывет только вверху
источник