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

Проверка ошибок

В Go ошибки представлены встроенным интерфейсом error. Этот интерфейс содержит единственный метод Error() string, который возвращает текстовое описание ошибки. Проверка ошибок в Go выполняется путем сравнения возвращаемого значения ошибки с nil. Если функция возвращает ошибку, не равную nil, значит, произошла ошибка, и ее нужно обработать. В отличие от исключений в других языках, Go требует явной проверки каждой ошибки, что делает код более надежным и предсказуемым.

Синтаксис

if err := doSomething(); err != nil { // handle error return err }

Пример

Давайте рассмотрим базовый пример проверки ошибки при открытии файла:

package main import ( "fmt" "os" ) func main() { file, err := os.Open("nonexistent.txt") if err != nil { fmt.Println(err) return } defer file.Close() fmt.Println("File opened successfully") }

Результат выполнения кода (если файл не существует):

"open nonexistent.txt: no such file or directory"

Пример

Проверим ошибку при преобразовании строки в число с помощью strconv.Atoi:

package main import ( "fmt" "strconv" ) func main() { num, err := strconv.Atoi("abc") if err != nil { fmt.Println("Error:", err) return } fmt.Println("Number:", num) }

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

"Error: strconv.Atoi: parsing \"abc\": invalid syntax"

Пример

Рассмотрим пример обработки ошибки в функции, которая возвращает несколько значений:

package main import ( "errors" "fmt" ) func divide(a, b float64) (float64, error) { if b == 0 { return 0, errors.New("division by zero") } return a / b, nil } func main() { res, err := divide(10, 0) if err != nil { fmt.Println("Error:", err) return } fmt.Println("Result:", res) }

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

"Error: division by zero"

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

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