Боязнь исключений
Многие программисты боятся исключений. Как я об этом узнал? Примерно раз в месяц в кложурной Слаке и Телеграме задают вопрос: что мне использовать вместо исключений? Им советуют возвращать мапы с полем error, разные типы-обертки, макросы. Есть несколько библиотек, имитирующих монады. Это когда поделил на ноль, и вместо исключения приходит объект Failure.
Что тут сказать… можно прятаться от проблемы разными способами. Не смотреть на нее, не называть вслух или креститься. Можно писать программу так, что даже в худшем случае она не упадет. Только вопрос — зачем?
Везде, где пытаются избежать исключений, я вижу обратное. Проблему зарывают в песок, и об ошибке никто не знает. Если не пожалуется пользователь или не придет менеджер, о проблеме не узнают. Или узнают в пятницу вечером. Я таких осиных гнезд вскрывал ого-го сколько.
Когда используют разные обертки вместо исключений, для меня это признак низкого уровня команды. В коллективе не понимают, как поступать с исключениями, как их собирать и расследовать. В такой команде пишут плохой код, вот и все.
Исключения не нужно прятать. Наоборот, как только что-то идет не так, нужно кидать их с как можно более понятным сообщением и данными для отладки. Для этого нужно победить свои страхи: признать, что код не идеален, в нем баги, и экстренно на них реагировать.
Терпимость к отклонениям должна быть нулевая. Зарывание ошибок в мапу — путь в никуда.
Нашли ошибку? Выделите мышкой и нажмите Ctrl/⌘+Enter
Eric, 9th Jan 2025, link
That’s why I like missionary, it let’s you properly deal with exception in async code where most libraries will force you to get rid of them