GOLANG NINJA. Искусство работы с ошибками
О курсе
Подробнее
Данный курс является первой частью специализации "Искусство работы с ошибками и безмолвной паники в Go".
Что такого особенного можно рассказать про ошибки?
Мы считаем, что грамотная обработка ошибок – это залог отказоустойчивости вашего приложения и здесь не всё так очевидно, как кажется на первый взгляд:
Сколько способов обернуть ошибку вы знаете? Один? Два? А их больше пяти! Какие подводные камни скрывает каждый из них?
Как обработать ошибку, не импортируя её пакет?
Может быть, вы знаете как стандартная библиотека пишет стектрейс ошибки?
А что такое константные ошибки?
А стектрейс – это вообще дорогая штука?
Чем опасен метод Error и какой тип ресивера ему выбрать?
Какие ошибки можно игнорировать, а какие нет?
Как обрабатывать ошибки, происходящие конкурентно?
Что делать, если пакет не предоставляет нужной ошибки?
Где и как логировать ошибки?
Насколько сторонние модули по работе с ошибками совместимы со стандартной библиотекой?
Как Go дошёл до текущих механизмов ошибок и что нас ждёт впереди?
и т.д.
Основная цель курса – сделать ваш код по работе с ошибками production ready.
Если вы думаете, что работа с ошибками в Go заканчивается знанием о errors.Is и errors.As, то вам точно к нам.
Для чего мы в своих курсах даём исторический контекст и обсуждаем устаревшие подходы?
Любая инженерная система – это ответ на предыдущие ограничения. Если сразу перескочить к современной картине мира, то всё будет выглядеть как набор правил, которые "просто так придумали". Но в реальности это результат эволюции – проб и ошибок, экспериментов сообщества, тупиковых ветвей и болезненных компромиссов.
Мы разбираем базу, чтобы вы лучше понимали причинно-следственную связь и знали, почему здесь сделали так, а не иначе. Плюс подобные упражнения помогают сблизить вас с вселенной Golang, важными фамилиями в ней и источниками информации, что в том числе обеспечивает ваш рост как инженера 🥷
Курс – сплошная теория?
Нет, нет и нет!
Разумеется, нам придётся коснуться теоретических аспектов работы с ошибками в Go, но будьте готовы читать много исходного кода как стандартной библиотеки, так и сторонних модулей.
Доступ к каждому последующему модулю открывается только после решения задач и тестов в текущем. Примеры из курса и заготовки для задач лежат в отдельном GitHub-репозитории. Для каждой задачи представлены юнит-тесты, которые она должна проходить – вам не придётся мучиться с вводом-выводом, как это бывает в задачах на других курсах.
Чему я научусь?
Если вы новичок в Go, то точно укрепите свои знания и вдоволь насладитесь примерами боевого кода, которых вам скорее всего не хватает в данный момент. Но предупреждаем, что вероятно вы не сможете осилить все задачи курса.
Если вы сеньор-помидор и практикующий Go-разработчик, то лишний раз познакомитесь с лучшими практиками и узнаете, за что стоит бить по рукам своих коллег, а может даже и себя.
В любом случае, если у вас есть опыт программирования в целом, навыки гугления стандартных пакетов и желание дойти до конца – то курс должен хорошо зайти.
Курс только про ошибки?
Нет!
Часто уроки содержат авторские комментарии по смежным темам (таким как тестирование, concurrency, статический анализ кода и т.д.), а каждый модуль снабжён всеобъемлющим списком литературы. Модули "Работа с ошибками в тестах" и "Работа с ошибками при конкурентном коде" заставят вас особенно попотеть.
Смежное по отношению к ошибкам понятие паники разбирается во второй части специализации.
Примеры задач
Сколько времени займёт курс?
Среднее время прохождения курса – шесть недель ежедневной работы.
Где поспрашивать о курсе?
Добро пожаловать в https://t.me/golangninja
Больше курсов на https://golang-ninja.ru
- Вам понадобятся:
- Знание Go на уровне решения небольших, но порою сложных задачек.
- Знание Си на уровне решения небольших задачек на основе готового кода.
- Установленный gcc (или Docker).
- Установленный компилятор Go >= 1.18.
- Минимальное владение git.
- Крайне желательна Unix-подобная ОС (не Windows).
- Разработчики, ежедневно практикующие Golang, среднего уровня экспертизы и выше.
Содержание
Программа курса
9 занятий№ТемаЧто внутри
01Вступительное слово- Вступительное слово
02Концепция ошибок в Си- Вступление
- Знакомство с errno
- Знакомство с errno_t
- Организация "своих" ошибок
- Литература
03Концепция ошибок в Go- Вступление
- Введение в интерфейсы в Go
- Концепция ошибок в Go
- Базовые подходы к обработке ошибок в Go
- Стандартный пакет errors
- Врапинг ошибок до Go 1.13
- Врапинг ошибок после Go 1.13 (часть 1)
- Врапинг ошибок после Go 1.13 (часть 2)
- Изменения после Go 1.20
- Литература
04Нестандартные модули для работы с ошибками в Go- Вступление
- github.com/pkg/errors (часть 1)
- github.com/pkg/errors (часть 2)
- github.com/pkg/errors (часть 3)
- github.com/cockroachdb/errors (часть 1)
- github.com/cockroachdb/errors (часть 2)
- Прочие нестандартные модули
- Литература
05Лучшие практики по работе с ошибками в Go- Вступление
- Объявление ошибок
- Ошибки и тип ресивера
- Константные ошибки
- Базовые идиомы по обработке ошибок (часть 1)
- Про метод Error
- Базовые идиомы по обработке ошибок (часть 2)
- Исключения из правил
- Лучшие практики врапинга
- Оборачивание io.EOF и иже с ним
- Логирование ошибок
- Monadic-style работа с ошибками
- Линтеры и ошибки (часть 1)
- Линтеры и ошибки (часть 2)
- Литература
06Работа с ошибками в тестах- Вступление
- Работа с ошибками в тестах (часть 1)
- Работа с ошибками в тестах (часть 2)
- Работа с ошибками в тестах (часть 3)
- Литература
07Работа с ошибками при конкурентном коде- Вступление
- Передача ошибок между горутинами
- Ошибки при выполнении групповых задач
- Литература
08Будущее ошибок в Go 2- Вступление
- Error Inspection & Printing
- Error Handling
- Литература
09Заключительное слово- Заключительное слово
01Вступительное слово
- Вступительное слово
02Концепция ошибок в Си
- Вступление
- Знакомство с errno
- Знакомство с errno_t
- Организация "своих" ошибок
- Литература
03Концепция ошибок в Go
- Вступление
- Введение в интерфейсы в Go
- Концепция ошибок в Go
- Базовые подходы к обработке ошибок в Go
- Стандартный пакет errors
- Врапинг ошибок до Go 1.13
- Врапинг ошибок после Go 1.13 (часть 1)
- Врапинг ошибок после Go 1.13 (часть 2)
- Изменения после Go 1.20
- Литература
04Нестандартные модули для работы с ошибками в Go
- Вступление
- github.com/pkg/errors (часть 1)
- github.com/pkg/errors (часть 2)
- github.com/pkg/errors (часть 3)
- github.com/cockroachdb/errors (часть 1)
- github.com/cockroachdb/errors (часть 2)
- Прочие нестандартные модули
- Литература
05Лучшие практики по работе с ошибками в Go
- Вступление
- Объявление ошибок
- Ошибки и тип ресивера
- Константные ошибки
- Базовые идиомы по обработке ошибок (часть 1)
- Про метод Error
- Базовые идиомы по обработке ошибок (часть 2)
- Исключения из правил
- Лучшие практики врапинга
- Оборачивание io.EOF и иже с ним
- Логирование ошибок
- Monadic-style работа с ошибками
- Линтеры и ошибки (часть 1)
- Линтеры и ошибки (часть 2)
- Литература
06Работа с ошибками в тестах
- Вступление
- Работа с ошибками в тестах (часть 1)
- Работа с ошибками в тестах (часть 2)
- Работа с ошибками в тестах (часть 3)
- Литература
07Работа с ошибками при конкурентном коде
- Вступление
- Передача ошибок между горутинами
- Ошибки при выполнении групповых задач
- Литература
08Будущее ошибок в Go 2
- Вступление
- Error Inspection & Printing
- Error Handling
- Литература
09Заключительное слово
- Заключительное слово
Документ после выпуска
Сертификат выдаётся при завершении курса на 90%. Сертификат "с отличием" выдаётся только за 100% прохождение курса.
Организатор
Автор курса
StepikStepik — образовательная платформа и конструктор онлайн-курсов. Мы разрабатываем алгоритмы адаптивного обучения, сотрудничаем с авторами MOOC, помогаем в проведении олимпиад и программ переподготовки. Наша цель — сделать образование открытым и удобным.
Stepik — широко известная российская образовательная платформа, основанная в 2013 году. На Stepik зарегистрировано более миллиона пользователей из России и стран СНГ.
В настоящее время на Stepik представлены несколько тысяч учебных курсов на самые разные темы.
Подробнее об авторе Мнения учеников
Отзывы о курсе
Информация обновлена 28 июля 2026 г.