РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
483 of 1593 menu

Интерфейс error

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

type error interface { Error() string }

Любой тип, реализующий метод Error() string, автоматически удовлетворяет интерфейсу error. Это позволяет создавать собственные типы ошибок, а также использовать стандартные функции для работы с ошибками, такие как errors.New и fmt.Errorf.

Синтаксис

type error interface { Error() string }

Метод Error возвращает строковое представление ошибки. Обычно это сообщение, описывающее причину возникновения ошибки.

Пример

Создадим простую ошибку с помощью встроенного типа errors.errorString, который реализует интерфейс error:

package main import ( "errors" "fmt" ) func main() { err := errors.New("something went wrong") fmt.Println(err) }

Результат выполнения кода:

"something went wrong"

В этом примере мы использовали функцию errors.New, которая создает новую ошибку с переданным текстовым сообщением.

Пример

Создадим пользовательский тип ошибки, реализующий интерфейс error:

package main import "fmt" type MyError struct { Msg string Code int } func (e MyError) Error() string { return fmt.Sprintf("code %d: %s", e.Code, e.Msg) } func main() { err := MyError{Msg: "invalid input", Code: 400} fmt.Println(err) }

Результат выполнения кода:

"code 400: invalid input"

Здесь мы создали структуру MyError, которая имеет поля Msg и Code. Метод Error возвращает форматированное сообщение, включающее оба этих поля.

Пример

Проверим, является ли возвращенная ошибка нулевой, и выведем соответствующее сообщение:

package main import ( "errors" "fmt" ) func main() { var err error if err == nil { fmt.Println("no error") } else { fmt.Println("error:", err) } err = errors.New("something went wrong") if err != nil { fmt.Println("error:", err) } }

Результат выполнения кода:

"no error" "error: something went wrong"

В Go нулевое значение интерфейса error равно nil. Проверка на nil позволяет определить, возникла ли ошибка при выполнении операции.

Смотрите также

  • функцию errors.New,
    которая создает новую ошибку с текстовым сообщением
  • функцию errors.Is,
    которая проверяет, является ли ошибка целевой
  • функцию errors.As,
    которая проверяет, является ли ошибка определенного типа
  • функцию fmt.Errorf,
    которая создает форматированную ошибку
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить