English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Go n'a pas de / catch telles exceptions mécanismes, nous ne pouvons pas lever des exceptions en Go.
Go utilise un autre mécanisme, appeléMécanisme de panique différé et de récupération.
Go traite les erreurs simples des fonctions et des méthodes en retournant un objet d'erreur. L'objet d'erreur peut être le seul ou le dernier retour, et est nil si il n'y a pas d'erreur dans la fonction.
Que ce soit avec ou sans erreur, nous devons toujours vérifier l'erreur dans l'appel de la fonction.
Nous ne devons jamais ignorer les erreurs, car elles peuvent entraîner un plantage du programme.
La méthode que Go utilise pour détecter et signaler les erreurs est
Les fonctions qui peuvent entraîner des erreurs retourneront deux variables : une valeur et un code d'erreur, nil si succès ; si une condition d'erreur, alors != nil.
Vérifiez l'erreur après l'appel de la fonction. Si une erreur se produit (if error != nil), arrêtez l'exécution de la fonction réelle (ou de tout le programme si nécessaire).
Go a un type d'interface d'erreur prédéfini
type error interface { Error() string }
Nous pouvons utiliser la fonction error.New du paquet d'erreur pour définir le type d'erreur et fournir un message d'erreur approprié, par exemple :
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) } }
Sortie :
Math: racine carrée d'un nombre négatif 8