Panic

Panic #

// Un `panic` signifie typiquement que quelque chose
// s'est mal passé et de manière inattendue. On l'utilise
// principalement pour faire échouer rapidement des
// erreurs qui ne devraient normalement pas arriver, ou
// que nous ne pouvons pas traiter.

package main

import "os"

func main() {
    // Nous allons utilise panic dans les exemples de ce
    // site pour traiter les cas imprévus. Ce
    // programme-ci est le seul du site qui va paniquer
    // durant son déroulement normal.
    panic("a problem")

    // Une utilisation courante de `panic`, c'est
    // d'abandonner si une fonction renvoie une valeur
    // d'erreur que nous ne savons (ou ne voulons) pas
    // traiter. Voici un exemple de panique si on a une
    // erreur inattendue lors de la création d'un nouveau
    // fichier.
    _, err := os.Create("/tmp/file")
    if err != nil {
        panic(err)
    }
}
# Exécuter ce programme va amener à une panique, qui 
# affiche un message d'erreur et une trace d'exécution, 
# et qui le programme en renvoyant une valeur de status
# non nulle.
$ go run panic.go
panic: a problem

goroutine 1 [running]:
main.main()
	/.../panic.go:12 +0x47
...
exit status 2

# A noter que contrairement à certains langages qui 
# utilisent des exceptions pour la gestion de nombreuses
# erreurs, en Go il est idiomatique d'utiliser des
# valeurs de retour qui indique le status d'erreur dès 
# que possible.