Алексей
И ему приходится её возвращать
Алексей
И так далее
Алексей
И в Go это реализовано самым худшим образом
Andrei 🦉
такое бывает, но очень редко.
а в моей практике - через раз
Andrey
если это библиотечный код, то он должен генерить свою ошибку
Алексей
такое бывает, но очень редко.
ну судя по обилию if err != nil { return nil, err } не так уж и редко
Andrey
и это опять же безотносительно языка
Алексей
и это опять же безотносительно языка
а вот тут не надо так за все языки говорить
Andrey
ну судя по обилию if err != nil { return nil, err } не так уж и редко
а кто говорит, что это всегда правильно?
Алексей
в той же джаве к примеру здоровенные стектрейсы, то есть эксепшен может нихреновый такой путь на верх проделывать
Andrey
а вот тут не надо так за все языки говорить
а какая разница, какой язык? Вызывается функция, котороая внутри вызывает другую, падучую, без которой она не может. Возвращаем наверх уже обёрнутую ошибку
Andrey
с exception'ами точно такая же история
Andrey
Если бы исключения были единственно правильным методом, то его везде давно бы внедрили
Алексей
Так что ситуация когда надо тупо пробросить наверх ошибку не такая уж и редкая
Andrey
Так что ситуация когда надо тупо пробросить наверх ошибку не такая уж и редкая
удачи с отладкой no such file or directory ошибок тогда, что я ещё могу сказать
Алексей
удачи с отладкой no such file or directory ошибок тогда, что я ещё могу сказать
Ну в отличии от Go, эксепшены в других языках содержат всегда стектрейс и можно неплохо так отследить место возникновения ошибки.
Andrey
ну или windows exception 0xХЗЧТОЭТО
Алексей
Andrey
это exception, который наверх вам пробросили. гадайте
Алексей
и чем это так отличается от Go (это error даже без стектрейса, который наверх вам пробросили, гадайте)
Andrey
ну ладно, memory could not be read вас устроит? ещё один exception
Алексей
и что это за эксепшены в вакууме?
Andrey
с исключениями ровно та же история
Алексей
Прям всегда надо чтоли?
Andrey
вы что, никогда падающий питон скрипт не отлаживали?
Алексей
отлаживал, ничего страшного в этом процессе я не увидел
Andrey
выдаст он вам стек трейс, а наверхе no such file or directory
Andrey
и гадай, что там за файл он хочет
Алексей
ну так по стектрейсу на самый низ спустится можно, хоть под отладчиком туда зайти
Andrey
а всё потому, что чувак, который open вызывает, не обрабатывает исключения, и не оборачивает их в "Failed to open file.txt: no such file or directory"
Andrey
или обработка гораздо выше, где инфа про файл уже потерялась
Andrey
и в го не везде надо
Andrey
но не рекомендуется
Алексей
и в го не везде надо
вот только в го приходится руками пробрасывать ошибку вверх
Алексей
с оборачиванием или без - вообще не важно, всегда приходится, или на месте обрабатывать, что не всегда возможно
Andrey
ну. не пользуйтесь го, что я могу сказать
Алексей
ну. не пользуйтесь го, что я могу сказать
ну я и не использую особо, кроме одного петпроджекта
Andrey
непонятен ваш посыл просто, что так трудно ошибку пробросить?
Алексей
и не буду использовать, несмотря на все его преимущества, как раз ровно из-за этого его недостатка
Алексей
непонятен ваш посыл просто, что так трудно ошибку пробросить?
посыл в том, что это точно не должно делаться тремя строчками кода
Andrey
почему?
Алексей
потому что 1) это довольно частая тривиальная операция 2) во многих языках это делается с помощью 0 строчек кода, то есть автоматически
Алексей
точнее почти во всех языках
Andrey
так а минусы то какие?
Andrey
если вы так быстро придумываете код, что вас тормозит написание 3х строчек, то поздравляю
Andrey
на это есть шорткаты в редакторе
Алексей
а давайте вместо знака + писать add_two_numbers?
Алексей
почему бы и нет?
Алексей
ведь есть шорткаты в редакторе
Алексей
дело в том, что простые вещи должны делаться просто
Andrey
давайте вы не будете передёргивать, это неуместная аналогия
Алексей
если вы этого не понимаете, то мне не очем с вами больше разговаривать
Andrey
вас просто бомбит, с кем не бывает. гнев - первая стадия
Илья
я не знаю о чем и с кем вы тут обсуждаете свои вкусы динамических языков программирования, при это уже давно :(
Andrey
no offence
Алексей
абсолютно
Алексей
вас просто бомбит, с кем не бывает. гнев - первая стадия
что касается go и его дурацкой работы с ошибкой, у меня дальше первой стадии не заходит
Илья
динамика тут не причём вообще
в си есть эксепшны? паттерн матчинг? или что вы там еще упоминали?
Andrey
ну, люди меняются :)
Алексей
В C++ есть эксепшены, в Java, C#, Python, JS и ещё кучи мест. Там где нет эксепшенов почему то вводят всякие краткие и удобные штуки для их замены. В Go так не сделали
Andrey
в го есть паники
Алексей
в го есть паники
Я их называю "исключения для бедных". И их постоянное использование не приветствуется, да и чужой код их как правило не юзает.
Andrey
в лиспе нет исключений
Andrei 🦉
лисп даже старше чем си
Алексей
в лиспе нет исключений
В лиспе наверняка есть средства простого проброса ошибок
Алексей
А средства сделать такой проброс (если его нет) точно есть
Andrey
в swift говорят нету тоже