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