Dans ce tutoriel, nous apprendrons comment créer nos propres erreurs personnalisées et les utiliser dans les fonctions et packages que nous créons. Nous utiliserons les mêmes techniques que dans la bibliothèque standard pour fournir des informations plus détaillées sur les erreurs personnalisées.
Créez des erreurs personnalisées à l'aide de la fonction New
Le moyen le plus simple de créer des erreurs personnalisées est d'utiliser la fonction New dans le package d'erreurs.
Avant d'utiliser la fonction New pour créer une erreur personnalisée, examinons d'abord comment New est implémenté. Comme indiqué ci-dessous, il s'agit de l'implémentation de la fonction New dans le package d'erreurs. La mise en œuvre de la fonction
// Package errors implements functions to manipulate errors. package errors // New returns an error that formats as the given text. func New(text string) error { return &errorString{text} } // errorString is a trivial implementation of error. type errorString struct { s string } func (e *errorString) Error() string { return e.s }
New est très simple. errorString est un type de structure avec un seul champ de chaîne. La ligne 14 utilise le récepteur de pointeur errorString (Pointer Receiver) pour implémenter la méthode de chaîne Error() de l'interface d'erreur.
La fonction New à la ligne 5 a un paramètre de chaîne, à travers lequel une variable de type errorString est créée et son adresse est renvoyée. Donc, il crée et renvoie une nouvelle erreur.
Maintenant que nous savons comment fonctionne la fonction New, commençons à utiliser New dans notre programme pour créer des erreurs personnalisées.
Nous allons créer un programme simple qui calcule le rayon d'un cercle et renvoie une erreur si le rayon est négatif.
package main import ( "errors" "fmt" "math" ) func circleArea(radius float64) (float64, error) { if radius < 0 { return 0, errors.New("Area calculation failed, radius is less than zero") } return math.Pi * radius * radius, nil } func main() { radius := -20.0 area, err := circleArea(radius) if err != nil { fmt.Println(err) return } fmt.Printf("Area of circle %0.2f", area) }
Courir sur Glayground
Dans le programme ci-dessus, on vérifie si le rayon est inférieur à zéro (ligne 10). Si le rayon est inférieur à zéro, nous renvoyons une zone égale à 0, accompagnée d'un message d'erreur approprié. Si le rayon est supérieur à zéro, la surface est calculée et une erreur nulle est renvoyée (ligne 13).
Dans la fonction main, on vérifie si l'erreur est égale à zéro à la ligne 19. Si ce n'est pas nul, on imprime une erreur et on la renvoie, sinon on imprime l'aire du cercle.
Dans notre programme, le rayon est inférieur à zéro, donc il affiche :
Le calcul de la surface a échoué, le rayon est inférieur à zéro
Recommandé : tutoriel de langue go
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!