Многие программисты боятся исключений. Как я об этом узнал? Примерно раз в месяц в кложурной Слаке и Телеграме задают вопрос: что мне использовать вместо исключений? Им советуют возвращать мапы с полем error, разные типы-обертки, макросы. Есть несколько библиотек, имитирующих монады. Это когда поделил на ноль, и вместо исключения приходит объект Failure.

Что тут сказать… можно прятаться от проблемы разными способами. Не смотреть на нее, не называть вслух или креститься. Можно писать программу так, что даже в худшем случае она не упадет. Только вопрос — зачем?

Везде, где пытаются избежать исключений, я вижу обратное. Проблему зарывают в песок, и об ошибке никто не знает. Если не пожалуется пользователь или не придет менеджер, о проблеме не узнают. Или узнают в пятницу вечером. Я таких осиных гнезд вскрывал ого-го сколько.

Когда используют разные обертки вместо исключений, для меня это признак низкого уровня команды. В коллективе не понимают, как поступать с исключениями, как их собирать и расследовать. В такой команде пишут плохой код, вот и все.

Исключения не нужно прятать. Наоборот, как только что-то идет не так, нужно кидать их с как можно более понятным сообщением и данными для отладки. Для этого нужно победить свои страхи: признать, что код не идеален, в нем баги, и экстренно на них реагировать.

Терпимость к отклонениям должна быть нулевая. Зарывание ошибок в мапу — путь в никуда.