Maison >développement back-end >Golang >Quelles sont les méthodes de gestion des exceptions en langage Go ?
#🎜🎜Le langage #Go n'a pas pris en charge le mécanisme de gestion des exceptions au sens traditionnel, mais dans le langage Go, certaines méthodes de gestion des erreurs peuvent être utilisées pour gérer différents types d'erreurs. Dans cet article, nous présenterons les méthodes de gestion des exceptions en langage Go.
func Divide(a, b int) (int, error) { if b == 0 { return 0, fmt.Errorf("can't divide by zero") } return a / b, nil }On voit que si le diviseur est 0, la fonction retournera une valeur d'erreur. Lorsque cette fonction est appelée, la valeur de retour est vérifiée pour voir si une erreur s'est produite. Si la valeur de l'erreur n'est pas nulle, le programme exécute le code de gestion des erreurs correspondant.
result, err := Divide(5, 0) if err != nil { log.Fatal(err) }
func Foo() { defer func() { if r := recover(); r != nil { log.Println("Recovered:", r) } }() panic("I'm panic!") fmt.Println("Continuing execution...") }Comme vous pouvez le constater, l'appel de la fonction panique est un moyen de terminer l'exécution du programme. S'il existe plusieurs fonctions de report, elles seront exécutées dans l'ordre FILO, la fonction de récupération doit donc être placée dans la fonction de report la plus externe.
type DivideError struct { dividend int divisor int } func (de DivideError) Error() string { return fmt.Sprintf("can't divide %d by %d", de.dividend, de.divisor) } func Divide(a, b int) (int, error) { if b == 0 { return 0, DivideError{a, b} } return a / b, nil }Dans cet exemple, nous définissons un nouveau type d'erreur DivideError . Ce type contient le diviseur et le dividende. Ce type implémente également une méthode Error pour renvoyer un message d'erreur. Dans notre fonction Divide, si le diviseur est 0, un type DivideError initialisé est renvoyé.
result, err := Divide(5, 0) if de, ok := err.(DivideError); ok { log.Fatalf("Error handled by application: %s ", de.Error()) } else if err != nil { log.Fatal(err) }Il convient de noter que lorsque vous utilisez un type personnalisé comme erreur, vous devez utiliser des assertions de type pour la conversion de type afin de gérer des types d'erreurs spécifiques. Dans cet article, nous présentons les méthodes de gestion des exceptions dans le langage Go, qui sont les valeurs de retour d'erreur, le mécanisme de différé-panique-récupération et les types d'erreurs personnalisés. Bien entendu, dans le développement réel, la méthode de gestion des exceptions la plus appropriée doit être sélectionnée en fonction de la situation spécifique.
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!