GOLANG NINJA. Искусство РАБОТЫ С ОШИБКАМИ

Уверены ли вы, что ваш код по работе с ошибками не стыдно показать людям?

Практически год ежедневной работы потребовался для создания курса на такую, казалось бы, очевидную тему.
Мы не подойдём тем, кто никогда не разрабатывал ни на одном языке программирования или едва знаком с Go
Online
> 125 заданий
Без дедлайнов
53 урока

Рейтинг на платформе 5.0

Обучили секретным техникам

243 ниндзя

В панике же не так много сухой теории, но есть где развернуться в плане:
  • разбора сложных механизмов языка вплоть до кода рантайма и ассемблера;
  • задач на боевое применения defer, как отдельно, так и в связке с panic / recover;
лучших практик и подводных камней непосредственно паникования.

Таким образом, курс получился менее обширным по теоретическому материалу (хотя он всё равно охватывает все без исключения аспекты заявленной темы), но более глубоким по погружению во внутренности Go и более плотным (может даже интересным) относительно практических задач.

Мы постарались сделать курс более динамичным, чем его предшественник. Что это значит?

Курс про ошибки более фундаментальный с теоретической точки зрения. Так как каждый приводимый нами тезис подкрепляется задачей, задач получилось огромное количество и многим людям тяжело пройти курс целиком.

Разработчики, ежедневно практикующие Golang, среднего уровня экспертизы и выше.

Обязательно предварительно пройдите открытые уроки и порешайте задачи в них, чтобы понять формат и способ подачи материала

Для кого этот курс
Мы пропагандируем экологичный подход к маркетингу и никогда не навязываем вам покупку курсов.
В курс входят
Начальные требования
Урока

Знание Go на уровне решения небольших, но порою сложных задачек.

Знание гошного (или хоть какого-нибудь) ассемблера на базовом уровне (необязательно уметь писать, но нужно уметь читать и понимать смысл инструкций).

Установленный компилятор Go >= 1.18.

Минимальное владение git.

Крайне желательна Unix-подобная ОС (не Windows).

Тестов
53
71
Интерактивных задач
56
Часов на прохождение
50+

О курсе

Программа курса

1. Вступительное слово
4. Нестандартные модули дляработы с ошибками в Go
5. Лучшие практики по работе с ошибками в Go
9. Заключительное слово
2. Концепция ошибок в Си
3. Концепция ошибок в Go
9 модулей
53 урока
71 тест
56 интерактивных задач
Error Wrapping
Custom Errors
Concurrent Errors
Go Error Linters
pkg/errors
errors.Is / errors.As
Go 2 Errros
Error Testing

Модули курса

1 АК. ЧАС

5 АК. ЧАСов

18 АК. ЧАСов

11 ак. часов

18 ак. часов

7. Работа с ошибками приконкурентном коде
8. Будущее ошибок в Go 2
6. Работа с ошибками в тестах

5 АК. ЧАСов

7 ак. часов

4 ак. часа

1 час

1. Вступительное слово

01

Вступительное слово

1 ак. час

Данный раздел посвящён ознакомлению обучающегося с учебным процессом и
необходимым для прохождения программы техническим инструментарием.

2. КОНЦЕПЦИЯ ОШИБОК В СИ

01

Вступление

0,1 ак. часа

02

Знакомство с errno

1 ак. час

03

Знакомство с errno_t

1 ак. час

04

Организация "своих" ошибок

2 ак. часа

09

Литература

0,9 ак. часа

В данном разделе рассматриваются базовые подходы к обработке ошибок в языке программирования Си, являющемся фундаментом для формирования многих
современных языков, включая Go. Раздел направлен на формирование у обучающихся понимания исторических предпосылок и ограничений классических механизмов обработки ошибок.

В ходе изучения обучающиеся знакомятся с основными инструментами сигнализации об ошибках в Си, включая использование глобального индикатора
ошибки errno, а также специализированного типа errno_t. Рассматриваются подходы организации пользовательских типов ошибок и их применению в
программировании.

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

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

3. КОНЦЕПЦИЯ ОШИБОК В go

01

Вступление

0,1 ак. часа

02

Введение в интерфейсы в Go

3 ак. часа

03

Концепция ошибок в Go

1 ак. час

04

Базовые подходы к обработке ошибок в Go

2 ак. часа

05

Стандартный пакет errors

1 ак. час

06

Врапинг ошибок до Go 1.13

1 ак. час

07

Врапинг ошибок после Go 1.13 (часть 1)

3 ак. часа

08

Врапинг ошибок после Go 1.13 (часть 2)

4 ак. часа

09

Изменения после Go 1.20

1 ак. час

10

Литература

1,9 ак. часа

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

Обучение начинается с актуализации знаний об интерфейсах в Go, необходимых для понимания встроенного интерфейса error и принципов его использования. Далее обучающиеся знакомятся с базовой моделью работы с ошибками, включая создание собственных ошибок и идиоматичные подходы к их обработке.

В рамках раздела подробно изучается механизм оборачивания (wrapping) ошибок: от подходов, применяемых до версии Go 1.13, до современных инструментов, включая функции errors.Unwrap, errors.Is, errors.As и использование директивы %w.

Особое внимание уделяется фундаментальным принципам работы с ошибками, сформулированным в экосистеме Go, а также базовым практикам их обработки. Рассматриваются средства стандартной библиотеки, предназначенные для работы с ошибками, и их эволюция в различных версиях языка.

Отдельное внимание уделяется построению цепочек ошибок с сохранением контекста и возможностью последующего анализа.

4. Нестандартные модули
для работы с ошибками в Go

01

Вступление

0,1 ак. часа

02

github.com/pkg/errors (часть 1)

2 ак. часа

03

github.com/pkg/errors (часть 2)

1 ак. час

04

github.com/pkg/errors (часть 3)

2 ак. часа

05

github.com/cockroachdb/errors (часть 1)

1 ак. час

06

github.com/cockroachdb/errors (часть 2)

2 ак. часа

07

Прочие нестандартные модули

2 ак. часа

08

Литература

0,9 ак. часа

Основной целью раздела является формирование у обучающихся понимания роли нестандартных инструментов в экосистеме Go, а также осознание целесообразности их использования по сравнению со стандартной библиотекой.

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

Также рассматривается библиотека github.com/cockroachdb/errors, предлагающая расширенные возможности, такие как комбинирование ошибок и поддержка передачи ошибок между сервисами, включая сетевые взаимодействия. Анализируются её особенности и отличия от других решений.

Дополнительно обучающиеся знакомятся с рядом других популярных библиотек, используемых в production-разработке, что позволяет сформировать общее представление о существующих подходах и инструментах.

Таким образом, раздел формирует у обучающихся навыки осознанного выбора инструментов для работы с ошибками и понимание их места в архитектуре современных программных решений.

В ходе обучения обучающиеся знакомятся с библиотекой
github.com/pkg/errors, которая долгое время являлась фактическим стандартом для расширенной работы с ошибками, включая поддержку стеков вызовов (stack traces) и дополнительные средства обогащения ошибок контекстом.

Отдельное внимание уделяется вопросам совместимости данной библиотеки со стандартным пакетом errors и возможностям миграции между ними.

5. Лучшие практики по
работе с ошибками в Go

01

Вступление

0,1 ак. часа

02

Объявление ошибок

1 ак. час

03

Ошибки и тип ресивера

1 ак. час

04

Константные ошибки

1 ак. час

05

Базовые идиомы по обработке ошибок (часть 1)

1 ак. час

06

Про метод Error

2 ак. часа

07

Базовые идиомы по обработке ошибок (часть 2)

1 ак. час

08

Исключения из правил

2 ак. часа

09

Лучшие практики врапинга

2 ак. часа

10

Оборачивание io.EOF и иже с ним

0,5 ак. часа

11

Логирование ошибок

2 ак. часа

12

Monadic-style работа с ошибками

1,5 ак. часа

13

Линтеры и ошибки (часть 1)

1 ак. час

14

Линтеры и ошибки (часть 2)

1 ак. час

15

Литература

0,9 ак. часа

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

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

Дополнительно изучаются подходы к логированию ошибок, а также альтернативные концепции их обработки, включая использование элементов функционального программирования (monadic-style).

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

Особое внимание уделяется вопросам корректного сравнения ошибок, ограничениям использования метода Error, а также случаям, когда допустимо отступление от общепринятых правил. Рассматриваются практики оборачивания (wrapping) ошибок, включая ситуации, в которых его применение является оправданным, а также исключения, связанные с отдельными типами ошибок (например, io.EOF).

6. Работа с ошибками в тестах

01

Вступление

0,1 ак. часа

02

Работа с ошибками в тестах (часть 1)

2 ак. часа

03

Работа с ошибками в тестах (часть 2)

1 ак. час

04

Работа с ошибками в тестах (часть 3)

1 ак. час

05

Литература

0,9 ак. часа

В данном разделе рассматриваются подходы к тестированию программного кода, возвращающего ошибки, в языке программирования Go. Раздел направлен на формирование у обучающихся практических навыков корректной проверки и анализа ошибок в процессе написания тестов.

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

Особое внимание уделяется различию между допустимыми и нежелательными практиками тестирования, а также типичным ошибкам, возникающим при работе с ошибками в тестах.

7. Работа с ошибками при конкурентном коде

01

Вступление

0,1 ак. часа

02

Передача ошибок между горутинами

3 ак. часа

03

Ошибки при выполнении групповых задач

3 ак. часа

04

Литература

0,9 ак. часа

В данном разделе рассматриваются особенности обработки ошибок в условиях конкурентного выполнения программ на языке Go.

Раздел направлен на формирование у обучающихся понимания специфики возникновения и обработки ошибок в многопоточных сценариях, а также на освоение практических подходов к их управлению.

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

Особое внимание уделяется механизмам доставки ошибок между горутинами и способам централизованной обработки результатов выполнения конкурентных операций.

Раздел предполагает наличие у обучающихся базовых знаний о конкурентности в Go (горутины, каналы, контексты), и сосредоточен непосредственно на аспектах, связанных с обработкой ошибок.

Также рассматриваются подходы к обработке ошибок при выполнении групповых задач, включая использование специализированных инструментов, таких как пакет golang.org/x/sync/errgroup, упрощающий координацию параллельных вычислений и агрегацию возникающих ошибок.

8. Будущее ошибок в Go 2

01

Вступление

0,1 ак. часа

02

Error Inspection & Printing

1 ак. час

03

Error Handling

1 ак. час

04

Литература

1,9 ак. часа

В данном разделе рассматриваются перспективы развития механизмов обработки ошибок в языке программирования Go в контексте инициативы Go 2.

Раздел носит теоретический характер и направлен на формирование у обучающихся целостного представления об эволюции подходов к работе с ошибками и тенденциях их дальнейшего развития.

В ходе изучения обучающиеся знакомятся с концепциями, предложенными в рамках черновиков design-документов, включая новые подходы к обработке ошибок (error handling), их проверке (error inspection) и выводу (error printing).

Особое внимание уделяется проблемам, существующим в текущей модели работы с
ошибками, а также способам их возможного решения, предложенным сообществом разработчиков Go.

9. ЗАКЛЮЧИТЕЛЬНОЕ слово

01

Заключительное слово

1 ак. час

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

Купите ПАКЕТ из ДВУХ курсов по специальной цене

Покупка пакета курсов – это наиболее выгодный способ приобрести оба курса в любом случае, независимо от периодических акций и скидок.
В пакет входят 2 курса:

Искусство работы с ошибками

С эти курсом проходят

Искусство безмолвной паники

Скидка -23%

Стоимость курса

17 330 ₽ / за курс

ДОСТУП К КУРСУ ПРИДЁТ НА УКАЗАННЫЙ EMAIL
В ТЕЧЕНИЕ ТРЁХ РАБОЧИХ ДНЕЙ ПОСЛЕ ОПЛАТЫ 👌

22 529 ₽ / за курс

Вы попробовали и поняли, что вам сейчас не подходит этот курс? Ничего страшного, мы можете запросить возврат средств в течение 30 дней после покупки.

Искусство работы С Ошибками