English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной учебник Golang

Условные операторы Golang

Функции и методы Golang

Структуры Golang

Срезы и массивы Golang

Строки (String) Golang

Пункторы Golang

Интерфейсы Golang

Конкурентоспособность Golang

Ошибки (Error) Golang

Другие темы Golang

Обработка ошибок (Error) в Go

Go не имеет механизма исключений, как try / catch в Java, и мы не можем выбрасывать исключения в Go.

Go использует другой механизм, называемыйМеханизмы отложенного panic и восстановления

Go обрабатывает простые ошибки, возвращая объект ошибки. Объект ошибки может быть уникальным или последним возвращаемым значением. Если функция не имеет ошибок, объект ошибки будет nil.

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

Никогда не игнорируйте ошибки, они могут привести к аварийному завершению программы.

Методы detections и reporting ошибок в Go

  • Функции, которые могут вызывать ошибки, будут возвращать два параметра: значение и код ошибки, если успешны,则为 nil; если ошибка,则为 != nil.

  • Проверяйте ошибки после вызова функции. Если ошибка произошла (if error != nil), останавливайте выполнение реальной функции (или всего программы, если это необходимо).

Go имеет предопределенный тип интерфейса ошибок

type error interface {
    Error() string
}	

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

err := errors.New("math - 负数的平方根")

Пример ошибки

package main
import "errors"
import "fmt"
import "math"
func Sqrt(value float64) (float64, error) {
   if (value < 0) {
      return 0, errors.New("Math: 负数的平方根")
   }
   return math.Sqrt(value), nil
}
func main() {
   result, err := Sqrt(-64)
   if err != nil {
      fmt.Println(err)
   } else {
      fmt.Println(result)
   }
   result, err = Sqrt(64)
   if err != nil {
      fmt.Println(err)
   } else {
      fmt.Println(result)
   }
}

Выход:

Math: квадратный корень от отрицательного числа
8