Рассуждения про "Guard" Proposal для обработки ошибок в Go
https://wagslane.dev/posts/guard-keyword-error-handling-golang/
Обработка ошибок в Go достаточно многословна, но при этом надёжна - нам, как минимум, нужно писать для каждой ошибки:
И сообщество регулярно пытается придумать хитрый способ сократить здесь строчки кода, но при этом не потерять надёжность и простоту.
Несколько лет назад был предложен вот такой proposal. Суть его в том, чтобы добавить в Go два ключевых слова:
-
-
Автор статьи комментирует данный proposal, рассказывает что ему не нравится, и как сделать лучше.
В нашем чате предлагаю подискутировать на тему обработки ошибок - согласны ли с автором? Какие варианты нравятся вам больше? Или лучше оставить всё как есть?
#article #english #error_handling
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
www.wagslane.dev
Thoughts on the "Guard" Proposal for Go's Error Handling
I found this proposal for improvements to error handling in Go interesting, but still not something I’d be happy to see implemented.
Allow me to clear up my thoughts on Go’s errors. Overall, I prefer how Go forces me to think about errors at every turn. When…
Allow me to clear up my thoughts on Go’s errors. Overall, I prefer how Go forces me to think about errors at every turn. When…
Очередная дискуссия про обработку ошибок в Go
https://habr.com/ru/companies/karuna/articles/830346/
Пост написан по мотивам поста этого же автора в его Telegram-канале.
В целом с автором я согласен, но, на мой взгляд, в статье мало нового, и повторяются плюс-минус те же тезисы, которые мы слышим много лет. При этом, статья в очередной раз привлекла внимание сообщества и вызвала активное обсуждение в комментариях.
Если ты новичок, можешь погрузиться в тему - что же у нас не так с обработкой ошибок. А если опытный разработчик, можешь в очередной раз присоединиться к дискуссии и почитать proposals🍾
————
Сам я выкручиваюсь обычно так:
Не идеально, но просто и понятно.
Надеюсь, что когда-нибудь авторы предложат нам что-то более удобное.
#error_handling
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
Хабр
Ошибки в языке Go — это большая ошибка
// гофер пытается найти логику среди обработки ошибок +-------+-------+-------+-------+-------+-------+ | | err | | err | | err | | ,_,,, | | | | | | ( ◉ _ ◉) | | | | | | /) (\ | | | | | ""...