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

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

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

27 ответов

18 просмотров

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

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 может лежать и ошибк...

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

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

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

Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
А вот это что за конструкция? Вернее, она тут нафига?
Serjone
10
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Мужики. привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных элементов...
Kraszx
2
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Всем привет! Кто пользуется DevExpress, подскажите пожалуйста, реализован ли в TcxGrid в новых версиях поиск по датам как в Экселе (ну т.е. не просто список чекбоксов со значе...
A Z
4
Карта сайта