Sobes.tech
Junior — Middle

Comment la gestion des exceptions et des erreurs est-elle effectuée dans votre application?

sobes.tech IA

Réponse de l'IA

En Go, la gestion des erreurs diffère de celle de nombreux autres langages, car il n’y a pas d’exceptions au sens traditionnel. À la place, les fonctions retournent généralement une valeur d’erreur (error) en second résultat.

Approches principales :

  • Vérification de l’erreur après l’appel d’une fonction :

    result, err := someFunction()
    if err != nil {
        // gestion de l’erreur
        log.Println("Erreur:", err)
        return err
    }
    // continuer avec result
    
  • Création de types d’erreurs personnalisés avec errors.New ou fmt.Errorf pour des messages plus informatifs.

  • Paniques (panic) et récupération (recover) sont rarement utilisés, principalement pour des erreurs critiques qui ne devraient pas se produire dans le flux normal.

  • Journalisation des erreurs et leur remontée dans la pile pour une gestion centralisée.

Exemple de gestion d’erreur :

package main

import (
    "errors"
    "fmt"
)

func divide(a, b float64) (float64, error) {
    if b == 0 {
        return 0, errors.New("division par zéro")
    }
    return a / b, nil
}

func main() {
    result, err := divide(10, 0)
    if err != nil {
        fmt.Println("Erreur:", err)
        return
    }
    fmt.Println("Résultat:", result)
}

Ainsi, en Go, les erreurs sont gérées explicitement, ce qui améliore la lisibilité et la fiabilité du code.