@gogolang

Страница 1240 из 1630
Алексей
20.07.2018
11:56:33
непонятен ваш посыл просто, что так трудно ошибку пробросить?
посыл в том, что это точно не должно делаться тремя строчками кода

Andrey
20.07.2018
11:56:41
почему?

Алексей
20.07.2018
11:57:42
потому что 1) это довольно частая тривиальная операция 2) во многих языках это делается с помощью 0 строчек кода, то есть автоматически

точнее почти во всех языках

Google
Andrey
20.07.2018
11:58:30
так а минусы то какие?

если вы так быстро придумываете код, что вас тормозит написание 3х строчек, то поздравляю

на это есть шорткаты в редакторе

Алексей
20.07.2018
12:00:43
а давайте вместо знака + писать add_two_numbers?

почему бы и нет?

ведь есть шорткаты в редакторе

дело в том, что простые вещи должны делаться просто

Andrey
20.07.2018
12:01:19
давайте вы не будете передёргивать, это неуместная аналогия

Алексей
20.07.2018
12:01:29
если вы этого не понимаете, то мне не очем с вами больше разговаривать

Andrey
20.07.2018
12:02:01
вас просто бомбит, с кем не бывает. гнев - первая стадия

Илья
20.07.2018
12:02:02
я не знаю о чем и с кем вы тут обсуждаете свои вкусы динамических языков программирования, при это уже давно :(

Andrey
20.07.2018
12:02:13
no offence

Google
Алексей
20.07.2018
12:02:20
абсолютно

вас просто бомбит, с кем не бывает. гнев - первая стадия
что касается go и его дурацкой работы с ошибкой, у меня дальше первой стадии не заходит

Илья
20.07.2018
12:03:01
динамика тут не причём вообще
в си есть эксепшны? паттерн матчинг? или что вы там еще упоминали?

Andrey
20.07.2018
12:03:08
ну, люди меняются :)

Andrey
20.07.2018
12:03:29
Алексей
20.07.2018
12:04:45
В C++ есть эксепшены, в Java, C#, Python, JS и ещё кучи мест. Там где нет эксепшенов почему то вводят всякие краткие и удобные штуки для их замены. В Go так не сделали

Andrey
20.07.2018
12:05:09
в го есть паники

Denis
20.07.2018
12:05:33
Алексей
20.07.2018
12:06:05
в го есть паники
Я их называю "исключения для бедных". И их постоянное использование не приветствуется, да и чужой код их как правило не юзает.

Andrey
20.07.2018
12:06:25
в лиспе нет исключений

Andrei
20.07.2018
12:06:46
лисп даже старше чем си

Алексей
20.07.2018
12:07:05
в лиспе нет исключений
В лиспе наверняка есть средства простого проброса ошибок

А средства сделать такой проброс (если его нет) точно есть

Andrey
20.07.2018
12:08:15
в swift говорят нету тоже

Алексей
20.07.2018
12:10:14
http://xahlee.info/comp/why_i_hate_exceptions.html
basically, exceptions are invisible gotos уже можно поспорить

Andrei
20.07.2018
12:10:39
Google
Andrey
20.07.2018
12:11:14
а, старые данные значит

Andrei
20.07.2018
12:11:21
в swift говорят нету тоже
а еще там есть паттернг матчинг и еще очень много всякого вкусного, не зря его сейчас активно тянут в серверную разработку

Илья
20.07.2018
12:12:04
basically, exceptions are invisible gotos уже можно поспорить
о чем спорить? вы в чатике про го уже не первый раз и не первый час описываете свою боль, и то, что вы не осилили го. Я не понимаю почему и зачем

Vladimir
20.07.2018
12:14:21
Я в своем коде каждую ошибку оборачиваю в другую ошибку с доп информацией, которую считаю нужной (метка места возникновения, может переменные, может текст), и ее уже возвращаю. Типа myerrors.New(“myfunc: err with path: “, path, err). Такая вот эмуляция стектрейса. В конечном счете жить можно.

Илья
20.07.2018
12:14:29
Andrei
20.07.2018
12:15:15
вообще то есть
хотя нет, это не экспешены в том смысле, в котором это реализованно в других языках, это специальные возвращаемые значения, которые по-умолчанию пробрасываются вверх по стеку

короче реализация обработки ошибок близка к идеальной

https://docs.swift.org/swift-book/LanguageGuide/ErrorHandling.html кому интересно

Vladimir
20.07.2018
12:17:30
А вообще, к го2 подумывают что-то с ошибками сделать (сделать их типизированными вроде), но это не точно)

Andrei
20.07.2018
12:18:51
А вообще, к го2 подумывают что-то с ошибками сделать (сделать их типизированными вроде), но это не точно)
go2 еще даже не на горизонте, а до его выхода уже столько всего понапишут, что переход индустрии с питона 2го на питон 3ий покажется легкой прогулкой

Aid
20.07.2018
12:18:58
А вообще, к го2 подумывают что-то с ошибками сделать (сделать их типизированными вроде), но это не точно)
https://github.com/golang/go/issues/21161 обсуждение идет с прошлого года, много разных идей

Антон
20.07.2018
12:23:12
вы переходили с питона 2 на 3? знаете что там было камнем преткновения?
То, что третий питон не обладает тьюринг-полнотой?

Илья
20.07.2018
12:23:48
То, что третий питон не обладает тьюринг-полнотой?
о, добрый день, как там дела в том языке, где все есть? :)

Vladimir
20.07.2018
12:24:16
хм, а сейчас ошибки нетипизированные?
errors.New() - просто текст. В стандертной либе некоторые с доп кодами.

Andrei
20.07.2018
12:24:23
вы переходили с питона 2 на 3? знаете что там было камнем преткновения?
в основном изменения в строках и изменения в стандартной либе, когда функции начала возвращать генераторы, там где раньше возвращались коллекции

Алексей
20.07.2018
12:24:23
Google
Илья
20.07.2018
12:24:51
errors.New() - просто текст. В стандертной либе некоторые с доп кодами.
что вам мешает использовать типизированные ошибки? реализовать интерфейс error очень просто, можете не благодарить

Антон
20.07.2018
12:25:45
Алексей
20.07.2018
12:26:05
А зря

Илья
20.07.2018
12:27:22
Тем, что из интерфейса в общем случае типизированную ошибку ты не достанешь
можно развернуто? в общем случае, имеется ввиду division by zero и прочее? то есть не руками сделанные ошибки?

Admin
ERROR: S client not available

Andrey
20.07.2018
12:28:44
потому что интерфейс

Илья
20.07.2018
12:28:55
??????

Антон
20.07.2018
12:29:35
а через switch проходится по типу ошибки (структуры)?
А где гарантия, что ты переберёшь все возможные типы ошибок, возвращаемые из функции?

Denis
20.07.2018
12:30:20
А где гарантия, что ты переберёшь все возможные типы ошибок, возвращаемые из функции?
скорее это для того чтобы отловить некоторые специфичные виды ошибок, а стандартное поведение будет в default

потому что интерфейс
https://blog.golang.org/error-handling-and-go тут есть примеры

Andrey
20.07.2018
12:30:55
??????
https://divan.github.io/posts/avoid_gotchas/#interfaces

Илья
20.07.2018
12:31:30
А где гарантия, что ты переберёшь все возможные типы ошибок, возвращаемые из функции?
хм, а в языке, который нельзя называть, тебя обязывают обработать все возможные типы ошибок? :O

Илья
20.07.2018
12:32:40
гуд джоб, наверное

Denis
20.07.2018
12:32:47
А что в default?
стандартное поведение P.S - типизированые ошибки я рассмартриваю исключительно как контейнер с доп. информацией об ошибке, напр. последний запрос с БД который отвалился или что то еще

Google
Илья
20.07.2018
12:33:30
https://divan.github.io/posts/avoid_gotchas/#interfaces
что именно? nil interface? возращаете nil, когда ошибки нет, и все будет ОК

Denis
20.07.2018
12:34:26
что именно? nil interface? возращаете nil, когда ошибки нет, и все будет ОК
Раз уж мы заговорили об ошибках, есть какой то способ обернуть обработку ошибок, чтобы 30% кода не состояло из if err != nil

как Result в расте

Илья
20.07.2018
12:36:01
Раз уж мы заговорили об ошибках, есть какой то способ обернуть обработку ошибок, чтобы 30% кода не состояло из if err != nil
насколько я знаю нет, но вы что-то делаете не так, или у вас проект из 10 строк, если 30% кода if err != nil

Антон
20.07.2018
12:36:09
как Result в расте
Без try! или ? обработка ошибок была бы столь же многословной, как и в Go

Andrey
20.07.2018
12:36:49
что именно? nil interface? возращаете nil, когда ошибки нет, и все будет ОК
я ж вам ссылку дал. если вы возвращаете типизированную ошибку без проверки, и внутри неё nil, то она на пройдёт стандартную проверку err != nil

Denis
20.07.2018
12:38:10
насколько я знаю нет, но вы что-то делаете не так, или у вас проект из 10 строк, если 30% кода if err != nil
немного утрировал, но err возвращается очень часто даже там где его и не предполагалось быть, в тех же функциях хеширования например

с одной стороны можно забить и юзать _ но это не по канону

Илья
20.07.2018
12:40:48
иногда и правда зря есть возврат ошибки, бывает

обычно такое сделано для реализации стандартных интерфейсов, и, помоему, не всегда осмысленно

Andrey
20.07.2018
12:43:10
попробуйте сказать, какая ветка выполнится до Run

именно поэтому вам нельзя возвращать типизированную ошибку, только интерфейс

ну или можно, если ваш код видите только вы

Илья
20.07.2018
12:47:58
https://play.golang.org/p/BB1b2_HDb6I
https://play.golang.org/p/R9Jg_9-PyM4

можно и нужно возвращать типизированные ошибки

Andrey
20.07.2018
12:48:52
так вы интерфейс возвращаете

что вам даст типизированная ошибка, если внешний код видит только метод Error()?

придётся кастовать

Илья
20.07.2018
12:50:12
эм, а паттерн матчинг что делает по вашему?

Страница 1240 из 1630