Golang Дайджест
7.73K subscribers
36 photos
1 file
164 links
Самое интересное из мира Go: новости, статьи, проекты, сервисы, изменения в языке и др.

Посты публикуются не часто - только самое важное, с чем я лично ознакомился.

Поэтому можно не мьютить канал =)

Обратная связь: @justskiv
Download Telegram
Рассуждения про "Guard" Proposal для обработки ошибок в Go

https://wagslane.dev/posts/guard-keyword-error-handling-golang/

Обработка ошибок в Go достаточно многословна, но при этом надёжна - нам, как минимум, нужно писать для каждой ошибки:
if err != nil {
return err
}
Но зато мы точно ни одну не потеряем.

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

Несколько лет назад был предложен вот такой proposal. Суть его в том, чтобы добавить в Go два ключевых слова: must и guard.

- must - синтаксический сахар для паники при ненулевой ошибке
- guard - синтаксический сахар для return err при ненулевой ошибке

Автор статьи комментирует данный proposal, рассказывает что ему не нравится, и как сделать лучше.

В нашем чате предлагаю подискутировать на тему обработки ошибок - согласны ли с автором? Какие варианты нравятся вам больше? Или лучше оставить всё как есть?

#article #english #error_handling
Очередная дискуссия про обработку ошибок в Go

https://habr.com/ru/companies/karuna/articles/830346/

Пост написан по мотивам поста этого же автора в его Telegram-канале.

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

Если ты новичок, можешь погрузиться в тему - что же у нас не так с обработкой ошибок. А если опытный разработчик, можешь в очередной раз присоединиться к дискуссии и почитать proposals 🍾

————

Сам я выкручиваюсь обычно так:

func myFunc() error {
const op = "mypackage.myFunc"
// ...
if err != nil {
return fmt.Errorf("%s: %w", op, err)
}


Не идеально, но просто и понятно.
Надеюсь, что когда-нибудь авторы предложат нам что-то более удобное.

#error_handling
Please open Telegram to view this post
VIEW IN TELEGRAM