Функция errors.New

Функция errors.New создает новую ошибку с заданным текстовым сообщением. Она принимает один параметр - строку с описанием ошибки, и возвращает значение типа error. Эта функция является базовым инструментом для создания ошибок в Go.

Синтаксис

goerrors.New(text)

Пример

Давайте создадим простую ошибку с сообщением "invalid input":

gopackage main

import (
  "errors"
  "fmt"
)

func main() {
  err := errors.New("invalid input")
  fmt.Println(err)
}

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

go"invalid input"

Пример

Функция errors.New часто используется для возврата ошибок из функций. Давайте создадим функцию, которая проверяет, является ли число положительным:

gopackage main

import (
  "errors"
  "fmt"
)

func checkPositive(num int) error {
  if num <= 0 {
    return errors.New("number must be positive")
  }
  return nil
}

func main() {
  err := checkPositive(-5)
  if err != nil {
    fmt.Println(err)
  }
}

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

go"number must be positive"

Пример

Ошибки, созданные через errors.New, можно сравнивать с помощью оператора == или функции errors.Is. Давайте создадим константную ошибку и проверим ее:

gopackage main

import (
  "errors"
  "fmt"
)

var ErrNotFound = errors.New("not found")

func findItem(id int) error {
  if id != 42 {
    return ErrNotFound
  }
  return nil
}

func main() {
  err := findItem(1)
  if errors.Is(err, ErrNotFound) {
    fmt.Println("Item not found")
  }
}

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

go"Item not found"

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

  • функцию errors.Is,
    которая проверяет, является ли ошибка целевой
  • функцию errors.As,
    которая позволяет получить ошибку определенного типа
  • функцию fmt.Errorf,
    которая создает форматированную ошибку
  • функцию errors.Join,
    которая объединяет несколько ошибок в одну