Menu
Coddy logo textTech

Fonctions retournant des erreurs

Fait partie de la section Fondamentaux du Journey GO de Coddy — leçon 104 sur 109.

En Go, les fonctions retournent couramment une error comme dernière valeur de retour pour indiquer si quelque chose s'est mal passé.

Créez une fonction qui retourne à la fois un résultat et une erreur :

func divide(a, b float64) (float64, error) {
    if b == 0 {
        return 0, errors.New("cannot divide by zero")
    }
    return a / b, nil
}

Appelez la fonction et gérez l'erreur :

func main() {
    result, err := divide(10, 0)
    if err != nil {
        fmt.Println("Error:", err)
    } else {
        fmt.Println("Result:", result)
    }
}

La sortie sera :

Error: cannot divide by zero
challenge icon

Défi

Débutant

Dans ce défi, vous allez vous entraîner à créer une fonction qui renvoie une erreur lorsqu'une entrée invalide est fournie.

Vous devez compléter la fonction validateUsername qui vérifie si un nom d'utilisateur est valide. Un nom d'utilisateur est valide s'il contient au moins 3 caractères. Si le nom d'utilisateur est valide, retournez nil pour l'erreur. S'il est invalide, retournez une erreur avec un message approprié.

Le code pour appeler votre fonction et gérer l'erreur est déjà écrit pour vous.

Note : Ce défi utilise des variables prédéfinies au lieu de la saisie utilisateur.

Aide-mémoire

Les fonctions en Go retournent couramment une error comme dernière valeur de retour pour indiquer si quelque chose s'est mal passé.

Créez une fonction qui retourne à la fois un résultat et une erreur :

func divide(a, b float64) (float64, error) {
    if b == 0 {
        return 0, errors.New("cannot divide by zero")
    }
    return a / b, nil
}

Gérez l'erreur lors de l'appel de la fonction :

result, err := divide(10, 0)
if err != nil {
    fmt.Println("Error:", err)
} else {
    fmt.Println("Result:", result)
}

Retournez nil lorsqu'il n'y a pas d'erreur, et utilisez errors.New() pour créer des messages d'erreur.

Essayez vous-même

package main

import (
	"errors"
	"fmt"
)

func validateUsername(username string) error {
	// TODO : Vérifier si la longueur du nom d'utilisateur est inférieure à 3 caractères
	// Si c'est le cas, retourner une erreur avec le message "username too short"
	// Sinon, retourner nil (aucune erreur)
	
	return nil
}

func main() {
	// Tester avec un nom d'utilisateur valide
	validName := "bob123"
	err1 := validateUsername(validName)
	if err1 != nil {
		fmt.Printf("%s is invalid: %v\n", validName, err1)
	} else {
		fmt.Printf("%s is valid!\n", validName)
	}
	
	// Tester avec un nom d'utilisateur invalide
	invalidName := "ab"
	err2 := validateUsername(invalidName)
	if err2 != nil {
		fmt.Printf("%s is invalid: %v\n", invalidName, err2)
	} else {
		fmt.Printf("%s is valid!\n", invalidName)
	}
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Fondamentaux