Go by Example: Panic

Un panic tipicamente significa che qualcosa è andato inaspettatamente storto. Lo usiamo principalmente per fallire velocemente su errori che non dovrebbero verificarsi durante l’operazione normale, o che non siamo preparati a gestire con grazia.

package main
import "os"
func main() {

Useremo panic in tutto questo sito per verificare errori inaspettati. Questo è l’unico programma nel sito progettato per fare panic.

    panic("a problem")

Un uso comune di panic è interrompere se una funzione restituisce un valore di errore che non sappiamo come (o vogliamo) gestire. Ecco un esempio di panic se otteniamo un errore inaspettato durante la creazione di un nuovo file.

    _, err := os.Create("/tmp/file")
    if err != nil {
        panic(err)
    }
}

Eseguendo questo programma farà sì che faccia panic, stampi un messaggio di errore e tracce delle goroutine, ed esca con uno status diverso da zero.

Quando il primo panic in main si scatena, il programma esce senza raggiungere il resto del codice. Se vuoi vedere il programma provare a creare un file temporaneo, commenta il primo panic.

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

Nota che a differenza di alcuni linguaggi che usano le eccezioni per gestire molti errori, in Go è idiomatico usare valori di ritorno che indicano errori ovunque possibile.

Prossimo esempio: .