Регламент для работы с ошибками в Go

Лучшие практики, Go-way

GO

Доклад принят в программу конференции

Мнение Программного комитета о докладе

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

Целевая аудитория

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

Тезисы

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

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

После этого я хочу поговорить о wrapping (оборачивании), которое позволяет получить stack trace и место, где произошла ошибка. Также wrapping дает возможность получить данные для повторения ошибки, разделить общедоступные и частные сообщения об ошибках для логирования и ответа клиента. Расскажу и о других возможностях wrapping.

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

Backend-сочинитель продуктовых решений для передачи вашего смартфона в хорошие руки.

Видео