Обработка ошибок в Go — это нечто большее, чем просто предотвращение падений программы. Она помогает строить системы, которые “ломаются красиво”, ясно сообщают о проблемах и упрощают отладку. В отличие от языков в которых есть обработка исключений, Go заставляет нас явно думать о том, что может пойти не так. Это одновременно и преимущество, и недостаток.
Роб Пайк однажды сказал: “Ошибки — это значения” (прим. переводчика: В Go ошибка — это не исключение и не что-то “особенное”, а просто значение, которое может вернуть функция.) Эта простая мысль определяет то, как мы должны подходить к обработке ошибок в Go. Давайте посмотрим, как превратить эту ”филосовскую” мысль в практические паттерны.
Читать далее