Attraper la panique en Go
À Golang, les paniques sont des conditions exceptionnelles qui peuvent provoquer une interruption anormale du programme. Par défaut, les paniques arrêtent l'exécution, affichant une trace de pile. Cependant, il est possible d'« attraper » ces paniques et de les gérer avec grâce.
Scénario :
Considérez le code suivant :
package main import ( "fmt" "os" ) func main() { file, err := os.Open(os.Args[1]) if err != nil { fmt.Println("Could not open file") } fmt.Printf("%s", file) }
Si aucun argument de fichier n'est fourni, une panique est lancée à la ligne 9 : "panic: runtime error: index out of range."
Solution :
Pour attraper ceci panique, nous pouvons utiliser la fonction recovery(). recovery() permet à une goroutine de se remettre d'une panique et de renvoyer la valeur transmise à l'appel de panique.
package main import ( "fmt" "os" ) func main() { defer func() { if err := recover(); err != nil { fmt.Println("Error:", err) } }() file, err := os.Open(os.Args[1]) if err != nil { panic(err) } fmt.Printf("%s", file) }
Avec cette modification, le code peut désormais intercepter la panique et la gérer en imprimant un message d'erreur.
Attention :
La panique n'est pas une solution idéale pour tous les scénarios de gestion des erreurs. La philosophie de conception de Go met l'accent sur la vérification explicite des erreurs plutôt que sur la panique. Cependant, le mécanisme recovery() permet de capturer les paniques inattendues et d'effectuer des opérations de nettoyage.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!