170 похожих чатов

Приветствую. Подскажите по ошибкам в го. Как их лучше: принтить

в месте где она случилась или лучше возвращать на уровень выше. А если этих уровней несколько, то на самый вверх или только на один уровень выше ?

27 ответов

21 просмотр

у айтикрасавчика недавно было видео на эту тему, подписан на его канал?

Web- Автор вопроса

Лучше на самый верх + добавить сообщение в лог.

Web
Неа( Если хорошее, то пойду посмотрю

вот: https://www.youtube.com/watch?v=LwqtG7aAptg, вдогонку рекомендую ещё и это видео посмотреть: https://www.youtube.com/watch?v=eOyxRI8FQm4 косвенно оно касается обработки ошибок в go

Web- Автор вопроса
Павел Середа
вот: https://www.youtube.com/watch?v=LwqtG7aAptg, ...

Ознакомился с первым видео и сразу вопрос. Делать errors.New и свою ошибку придумать или возвращать err который пришел например от filepath.Abs ?

Web
Ознакомился с первым видео и сразу вопрос. Делать ...

делать errors.New / fmt.Errorf указывая в ней префикс текущего пакета/метода/функции(кароч идентификатор который поможет понять где именно произошла ошибка) + добавляя в неё ошибку пришедшую из filepath.Abs

Web- Автор вопроса
Web
https://play.golang.org/p/_ARbQV78n1Z ?

Можно fmt.Errorf("creating file %s: %w", fileName, err)

Web- Автор вопроса
Zver
Можно fmt.Errorf("creating file %s: %w", fileName,...

Да, более подробно получается

Zver
Вы где это выкопали?

Я правильно понял, что делать префикс не канон? Например, есть у меня приложение, которое что-то спрашивает у стороннего апи. Код работающий с апи у меня лежит в отдельном пакете. Делать, для возвращаемых этим пакетом, ошибок префикс в fmt.Errorf не правильно? Почему? Мне кажется это упрощает разбор ошибок, так как впиливать логирование в пакет апи — не самая лучшая идея.

Denis Nesterenko
Я правильно понял, что делать префикс не канон? На...

Там что-то другое было. Вообще при оборачивании пишут, что собирались делать или особенности ошибки в текущем контексте. Плюс информация которая поможет понять условия в которых произошло (параметры какие-то)

Zver
Там что-то другое было. Вообще при оборачивании пи...

У меня примерно так: “service1-api: do request error: %w”. Просто в начале указываю, что где именно произошла ошибка, потом контекст, потом оборачиваю. И сразу понятно, где копать.

Denis Nesterenko
Я правильно понял, что делать префикс не канон? На...

А почему не лучшая? Лог помогает понять что не так было

Alexander N
А почему не лучшая? Лог помогает понять что не так...

Потому что лог помогает понять, что происходит на уровне приложения, а не дополнительного пакета. Представь, что пакет апи генерит кучу ошибок... нужно ли писать это в логи приложения, или в отдельные логи? По моему, лучше вернуть стектрейс этих ошибок на уровень приложения и залогировать нужное там. Можно вспомнить про уровни логирования, поставить трейс везде в пакете апи, но мне это кажется ещё менее идиоматичным.

Denis Nesterenko
Потому что лог помогает понять, что происходит на ...

Но апи кидает подробную ошибку? Тогда да на уровне приложения логирование нужно

Alexander N
Но апи кидает подробную ошибку? Тогда да на уровне...

Не просто подробную, все ошибки апи врапают низлежащие. Любую из них можно развернуть и залогировать. А дополнительным плюсом, является отказ от зависимости логером для пакета апи.

Denis Nesterenko
У меня примерно так: “service1-api: do request err...

А вот это текст "service1-api", он каждый раз явно повторяется в коде?

Mikhail Efimov
А вот это текст "service1-api", он каждый раз явно...

Если лениво сделать свою ошибку так как пакет маленький, повторяется в двух-трёх методах, не страшно. А если пакет разожрался, в корне пакета делаем свою ошибку и в имплементации Error() string указываем префикс

Denis Nesterenko
Не просто подробную, все ошибки апи врапают низлеж...

То есть внутри например ошибки API может быть ошибка скажем I/O

Alexander N
То есть внутри например ошибки API может быть ошиб...

Ну как I/O. Внутри ошибки API может лежать и ошибка http и io и bytes. Выше развернуть можно и строить от этого логику.

Denis Nesterenko
Ну как I/O. Внутри ошибки API может лежать и ошибк...

Ну да я просто пример привёл первый, который в голову пришёл

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта