нем напрягает полное отсутствие ооп
или это приживется со временем?
и try catch нет
а на нем например в node js многое строится
по сути это как if else стало в нем для меня
Switch- case)
Вы неправильно ООП понимаете, раз думаете, что в go его нет
Если в js у вас код строится на исключениях, то это не очень хорошо
например connection timeout отловить его это не ошибка кода это исключение которое будет, если сервер не ответил
Проблема возникает тогда, когда всю бл строят на исключениях. И почти любая ошибка становится исключением. Разобраться в этой лапше становится трудно Для того, чтобы лапша не слипалась, делают, например, either Подход го более многословен, но в итоге обычно в коде проще разобраться
да нет никакой разницы исключения или ошибки. throw new ErrNotFound концептуально ничем не отличается от return ErrNotFound catch как и логирование на самом верху. надо обработать? пишешь try catch или if err != nil в чем разница? как уже заметили, стек вручную да, но я не вижу здесь достоинств ツ просто как факт.
к какой части именно фейспалм и почему?)
Catch на самом верху - один что ли? Тогда это очень плохо пахнет, и чаще всего бессмысленно, потому что нет возможности правильно обработать ошибку
если нигде не надо доп обработки - да. если надо пиши везде где хочешь.
Никто не запрещает и goto использовать, так то. Попробуй, это практически так же удобно, как и throw для любой ошибки
А чем throw плохо-то?
так а я использую. где это необходимо мне
Тот же throw exception вроде под капотом похож по смыслу на goto
Ну так-то на уровне ассемблера и обычный цикл - goto
Лапшой, в которую превращаются код тогда, когда вместо ошибок в нём исключения
Не вижу лапши в своём коде
Подожди полгода или год, ей надо остыть и слипнуться
К предположению, что единственный способ обрабатывать ошибки/исключения - это прокидывать до самого верха и там логировать
Да и по нескольку лет проекты на питоне и яве поддерживал, чем в итоге ручное перекидывание err-ов лучше?
В общем все аргументы в пользу разработчиков го, поленившихся сделать исключения, примерно такие, да
не не. мисскоммуникейт. могу попробовать раскрыть мысль.
в java везде троу нью. в го везед ретурн ерр это ничем не отличается. надо обработать ошибку? в джаве пишешь трай кетч в го пишешь иф ерр нет разница. в го все хорошо в этом плане.
С тем отличием, что кода надо писать сильно больше и получаем спагетти из ерров
у меня нет спагетти. а чтобы ее не было нужна нормальная архитектура.
Кетчи иногда забывают добавлять, и исключение летит куда-то туда, где с ним ничего не сделать Один кетч ловит сразу все ошибки (мы в контексте js), и надо ещё в нём разбираться, как именно и что сделать (или понять, что на этом уровне мы уже и не можем ничего сделать) Отработка ошибок не там, где они могут быть обработаны Вот это всё превращает код в макароны, которые приходится распутывать. Надо понять как работает код? Скачаешь от функции к функции, от файла к файлу, из слоя в слой Не всегда исключения - плохо. Но когда их начинают использовать для ошибок, чаще всего получатся не очень хорошо
Исключение, например, в запросе джанги, упрется в 500 на клиент Непроверенный err никуда не упрется, просто код будет работать некорректно, а с учетом, что для многих типов данных неинтциализированная переменная = пустое значение становится веселее func doSmth() (string, error) {} Забыл проверить ошибку? Получай пустую строку
В питоне и яве кетчи ловятся нормально Js да, очень плохо, тут согласег
Ну вот скажите мне, как такая проблема может возникнуть в питоне или яве?
Вот всем вопрос, пока никто не ответил
Тут ты прав. Но мы не забываем проверять ошибки
Какая проблема? Где пробьлема?
Я ссылаюсь на сообщ выше
Обсуждают сегодня