func panic(interface{}) et func recovery() interface{} sont deux fonctions utilisées pour la gestion des erreurs dans Golang.
La fonction de panic est de générer un message d'erreur. À partir de son type de paramètre, vous pouvez voir qu'il peut générer tout type de message d'erreur. (Apprentissage recommandé : go)
Si la panique est appelée quelque part pendant l'exécution de la fonction, un message d'erreur sera immédiatement généré et le processus d'exécution normal de la fonction sera terminer, mais Les instructions defer définies avant la panique dans cette fonction seront exécutées dans l'ordre. La goroutine arrête de s'exécuter immédiatement après.
recover() est utilisé pour capturer les informations de panique.
recover doit être défini dans l'instruction defer avant la panique. Dans ce cas, lorsque la panique est déclenchée, la goroutine ne se terminera pas simplement, mais exécutera l'instruction defer définie avant elle.
Détectez les erreurs de panique définies par vous-même :
package main import "fmt" import "math" func foo(a int) { defer fmt.Println("foo退出来了") defer func() { if r := recover(); r != nil { fmt.Printf("捕获到的错误:%s\n", r) } }() if a < 0 { panic("必须输入大于0的数") } fmt.Println("该数的方根为:", math.Sqrt(float64(a))) } func main() { var a int a = 10 fmt.Printf("a=%d\n", a) foo(a) var b int b = -10 fmt.Printf("b=%d\n", b) foo(b) fmt.Println("该goroutine还可以执行") } // /////////// a=10 该数的方根为: 3.1622776601683795 foo退出来了 b=-10 捕获到的错误:必须输入大于0的数 foo退出来了 该goroutine还可以执行 Process finished with exit code 0
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!