Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Golang: error wrapping, context, unwrap, errors.is, errors.as

Что такое упаковка ошибок (error wrapping)?

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

Короткий ответ

Упаковка ошибок — это создание новой ошибки на основе старой с добавлением текста контекста, при этом сохраняется ссылка на исходную ошибку. В Go для этого используют fmt.Errorf("%w", err) или errors.Wrap из сторонних библиотек. Упакованную ошибку можно «распаковать» функцией errors.Unwrap или проверить через errors.Is и errors.As.

Длинный ответ

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

Создание упаковки:

  • Стандартно:

    if err != nil {
      	return fmt.Errorf("не удалось прочитать файл %s: %w", filename, err)
    }
  • Сторонние: github.com/pkg/errors.Wrap(err, "контекст").

Unwrap и проверка:

  • errors.Unwrap(err) возвращает внутреннюю ошибку.

  • errors.Is(err, target) проверяет, содержит ли цепочка target.

  • errors.As(err, &typedErr) извлекает ошибку определённого типа.

Преимущества:

  • Ясный контекст возникновения.

  • Возможность обработки конкретных ошибок на любом уровне.

Когда применять:

  • При передаче ошибки через границы пакетов.

  • Для логирования и трассировки.

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • Golang

    Golang

Ключевые слова

#error wrapping

#context

#unwrap

#errors.is

#errors.as

Подпишись на Golang Developer в телеграм

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.