Golang est un langage de développement efficace, simultané et concis avec une bonne lisibilité et maintenabilité. Cependant, parfois même dans un tel langage, des erreurs inattendues se produisent dans le code, telles que : tableau hors limites, pointeur nul, ou même crash du système, etc. Afin de faire face à ces problèmes, Go propose une méthode de traitement simple : la panique.
1. Qu'est-ce que la panique ?
Panic est une fonction intégrée utilisée pour indiquer qu'une erreur irrécupérable s'est produite dans le programme. Lorsque la fonction de panique est appelée, le programme arrête le flux actuel et génère une erreur, puis arrête de s'exécuter et met fin à la pile d'appels.
2. Comment utiliser la panique ?
Panic est facile à utiliser. Lancez simplement l'erreur directement via la fonction panic()
. Par exemple : panic()
函数直接抛出错误即可。例如:
func app() { if err := someFunction(); err != nil{ log.Printf("operation failed, error - %s", err.Error()) panic(err) } // 其他代码 }
如果 someFunction()
发生了错误,那么应用程序将会停止运行并抛出 panic err
func recoverDemo() { defer func() { if r := recover(); r != nil { fmt.Println("recover from panic", r) } }() panic("something wrong") fmt.Println("After panic") }
someFunction()
, l'application cessera de s'exécuter et générera un message d'erreur panic err
. Dans l'exemple de code ci-dessus, lorsqu'une erreur se produit dans la fonction, nous imprimons les détails de l'erreur et les transmettons à la fonction panique. Cela entraînera l'arrêt forcé du programme et l'impression d'un message d'erreur sur la console. Dans ce cas, des informations d'erreur spécifiques seront imprimées et l'application cessera de s'exécuter et ne continuera pas à exécuter le code suivant. À ce stade, un mécanisme de détection d’erreurs doit être introduit dans le code pour garantir l’exactitude de l’application. 3. La relation entre panic et RecoverSi panic est utilisé dans le code, tout le code de la pile d'appels cessera de s'exécuter, le programme s'arrêtera et un message d'erreur sera généré, ce qui aura un grand impact sur le programme. Par conséquent, dans le langage Go, l’utilisation conjointe de panic et recovery peut rendre le programme plus robuste. La fonction panique arrêtera uniquement l'exécution du programme dans la fonction qui l'appelle directement. Ensuite, sur la pile d'appels de la fonction, lorsque l'exception atteint le sommet de la pile d'appels, elle mettra fin à l'exécution du programme. recover a la capacité de restaurer le fonctionnement du système, il ne peut être appelé que dans la fonction de retard. La fonction de récupération est d'intercepter les exceptions de panique et de restaurer le fonctionnement du système. S'il n'y a pas de panique avant d'appeler la fonction recovery, alors recovery ne fera rien. Regardons l'exemple suivant : rrreee
Dans cet exemple, la fonction après le mot-clé defer sera exécutée avant la fin de la fonction. Si une panique se produit pendant l'exécution de la fonction, la méthode de récupération sera activée après avoir atteint l'expression différée. Il captera la panique et imprimera le message que nous lui transmettrons. À Golang, récupérer est généralement utilisé pour se remettre de la panique. Habituellement, pendant le processus de développement, nous espérons que le programme ne s'arrêtera pas dans certaines circonstances, même si une exception se produit dans la fonction, ce qui nous oblige à utiliser la fonction de récupération pour récupérer. 4. Meilleures pratiquesAfin d'éviter les plantages de programme causés par un appel de panique, nous devons faire de notre mieux pour détecter ces exceptions et utiliser recovery pour récupérer le cas échéant. Dans ma pratique, je suis généralement les principes suivants lorsque j'utilise des paniques :
1. Restez simple
2. Utilisez correctement la fonction defer
3. Utiliser l'erreur standard
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!