Go Gérer une erreur


Exemple

Les erreurs In Go peuvent être renvoyées par un appel de fonction. La convention est que si une méthode peut échouer, le dernier argument renvoyé est une error .

func DoAndReturnSomething() (string, error) {
    if os.Getenv("ERROR") == "1" {
        return "", errors.New("The method failed")
    }

    // The method succeeded.
    return "Success!", nil
}

Vous utilisez plusieurs affectations de variables pour vérifier si la méthode a échoué.

result, err := DoAndReturnSomething()
if err != nil {
    panic(err)
}

// This is executed only if the method didn't return an error
fmt.Println(result)

Si l'erreur ne vous intéresse pas, vous pouvez simplement l'ignorer en l'attribuant à _ .

result, _ := DoAndReturnSomething()
fmt.Println(result)

Bien sûr, ignorer une erreur peut avoir de graves conséquences. Par conséquent, ceci n'est généralement pas recommandé.

Si vous avez plusieurs appels de méthode et qu'une ou plusieurs méthodes de la chaîne peuvent renvoyer une erreur, vous devez propager l'erreur au premier niveau capable de la gérer.

func Foo() error {
    return errors.New("I failed!")    
}

func Bar() (string, error) {
    err := Foo()
    if err != nil {
        return "", err
    }

    return "I succeeded", nil
}

func Baz() (string, string, error) {
    res, err := Bar()
    if err != nil {
        return "", "", err
    }

    return "Foo", "Bar", nil
}