Dans Go, récupérez d'une panique à l'aide de la fonction de récupération, qui renvoie la valeur de panique la plus récente de la pile de fonctions. En combat réel, vous pouvez gérer les exceptions io.EOF, par exemple : ouvrez un fichier et utilisez defer pour attraper la panique. Si la panique est égale à io.EOF, quittez normalement, sinon la panique se produira.
Dans Golang, la panique
entraînera la fermeture anormale du programme. Bien que panic
soit utile pour gérer les erreurs irrécupérables, il existe des situations dans lesquelles vous souhaiterez peut-être récupérer et poursuivre l'exécution. panic
会导致程序异常退出。虽然 panic
对于处理不可恢复的错误很有用,但在某些情况下,你可能希望恢复并继续执行。
使用 recover
函数可以从 panic
中恢复。recover
会从当前函数函数栈中返回最近的 panic
信息,并返回 interface{}
类型的 panic 值。
func main() { // 包装可能会产生 panic 的代码 defer func() { if err := recover(); err != nil { // 处理 panic fmt.Println("recovered from panic:", err) } }() // 可能产生 panic 的代码 panic("this will cause a panic") }
实战案例
以下是一个从文件读取数据时处理 io.EOF
récupérer
pour récupérer de panique
. recover
renverra les dernières informations panic
de la pile de fonctions de fonction actuelle et renverra une valeur de panique de type interface{}
. 🎜package main import ( "fmt" "io" "os" ) func main() { f, err := os.Open("data.txt") if err != nil { panic(err) } defer f.Close() defer func() { if err := recover(); err != nil { if err == io.EOF { fmt.Println("reached end of file") } else { panic(err) } } }() // 读取数据 data := make([]byte, 1024) for { n, err := f.Read(data) if err != nil { if err == io.EOF { // 达到文件末尾,正常退出 break } else { // 其他错误,引发 panic panic(err) } } // 处理读取到的数据 } }
io.EOF
lors de la lecture de données à partir d'un fichier : 🎜rrreeeCe 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!