Panic dans le framework Go est utilisé pour déclencher des exceptions irrécupérables, et Recover est utilisé pour récupérer de Panic et effectuer des opérations de nettoyage. Ils peuvent gérer des exceptions telles que les échecs de connexion à la base de données, garantissant ainsi la stabilité des applications et l'expérience utilisateur.
Panic et Recover sont deux mécanismes clés du framework Go pour gérer les exceptions, et ils peuvent jouer un rôle essentiel dans le processus de débogage.
Panic est une méthode intégrée dans Go utilisée pour déclencher des exceptions. Elle mettra immédiatement fin à la goroutine en cours d'exécution et imprimera les informations sur l'exception. En général, la panique ne doit être utilisée que lorsqu'une erreur irrécupérable est rencontrée.
Scénarios d'utilisation :
Syntaxe :
func(parameters) (result, parameters) { // 判断是否需要抛出异常 if (condition) { panic(reason) } return result, parameters }
Recover est utilisé pour récupérer d'une panique. Il peut obtenir les informations d'exception provoquées par la panique et revenir au processus d'exécution.
Scénarios d'utilisation :
Syntaxe :
func(parameters) (result, parameters) { defer func() { if err := recover(); err != nil { // 处理 panic 异常 } }() return result, parameters }
Considérons un simple serveur Web Go qui utilise la panique pour gérer les erreurs d'échec de connexion à la base de données :
package main import ( "database/sql" "fmt" "log" "net/http" ) func main() { // 连接数据库 db, err := sql.Open("mysql", "user:password@/database") if err != nil { // 数据库连接失败则抛出 panic panic(err) } // 启动 web 服务器 http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { defer func() { if err := recover(); err != nil { // 捕获 panic 并在 Web 响应中显示错误消息 w.WriteHeader(http.StatusInternalServerError) w.Write([]byte("Internal error occurred. Please try again later.")) log.Printf("Panic occurred: %s", err) } }() // 访问数据库并执行查询 rows, err := db.Query("SELECT * FROM users") if err != nil { // 数据库查询失败则抛出 panic panic(err) } // 处理查询结果 // ... }) log.Fatal(http.ListenAndServe(":8080", nil)) }
Dans l'exemple ci-dessus, Open()
La fonction se connecte à la base de données et renvoie une instance sql.DB
. Si la connexion échoue, la fonction Open()
déclenchera une panique. La fonction main()
utilise defer
et recover()
pour détecter les paniques. Open()
函数会连接到数据库并返回一个 sql.DB
实例。如果连接失败,Open()
函数会抛出 panic。main()
函数使用 defer
和 recover()
来捕获 panic。
当 Web 服务器处理请求时,Query()
函数会查询数据库并返回查询结果。如果查询失败,Query()
函数会抛出 panic。recover()
Query()
interroge la base de données et renvoie les résultats de la requête. Si la requête échoue, la fonction Query()
provoquera la panique. La fonction recover()
capturera cette panique et écrira le message d'erreur dans le journal. En utilisant panic et recovery, les applications peuvent gérer les exceptions avec élégance tout en fournissant des messages d'erreur conviviaux. Ceci est essentiel pour garantir la stabilité des applications et améliorer l’expérience utilisateur. 🎜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!