Чуваки из интернета говорят, что исключения - зло, а монады - лучше и вообще будущее. Я потратил 5 часов на то, чтобы разобраться в теме того, как можно обрабатывать ошибки, и в чем разница
Что-то ломается, у тебя вылезает ошибка, программа останавливается. При этом, указывается traceback ошибки
Все значения, которые функции возвращают, у нас оборачиваются в прослойку, она может быть Ok или Wrong (для примера. Ok - ошибки нет. Wrong - ошибка есть. мы сами з коде пишем, какие значения к каким категориям относятся)
И мы вручную проверяем, вернула ли програма Ok или Wrong. Если Ok - продолжаем программа, если Wrong - выводим ограниченную информацию об ошибке и стопаем программу
НЕТ НИКАКОЙ РАЗНИЦЫ. В ОБОИХ СЛУЧАЯХ ТЫ ПРОСТО ПРОПИСЫВАЕШЬ ИНФОРМАЦИЮ ОБ ОШИБКЕ И СТОПАЕШЬ ПРОГРАММУ (в большинстве случаев)
то, как реализованы монады в Go - это уродство. в Go тебе надо при каждом вызове функции писать
то есть при каждом вызове функции тебе надо говорить, че делать, если функция вернула ошибку (в большинстве случаев выбрасывать panic). это ничуть не лучше try... except, это не элегантно. в Rust чуть получше сделали с паттерн-матчингом результатов функции
Короче, тема непрактичная и оверхайп. Опять программисты по хуйне в интернете сруться
- если ты обрабатываешь ошибки так, то тебя надо уволить:
- если ты возвращаешь None в случае неуспеха программы, и не райзишь эксепшн, то так тоже делать нежелательно
Ссылка на оригинальный пост: https://t.me/sh1nke9/354