Maison  >  Article  >  développement back-end  >  Comment gérer les exceptions HTTP dans Golang ?

Comment gérer les exceptions HTTP dans Golang ?

WBOY
WBOYoriginal
2024-06-03 09:43:57410parcourir

Comment gérer les exceptions HTTP ? Dans Golang, la gestion des exceptions HTTP inclut les méthodes suivantes : Gestionnaire d'erreurs HTTP personnalisé : utilisez http.Error pour personnaliser la réponse d'erreur. Gestion des exceptions intégrée : utilisez recovery() pour récupérer les exceptions et errorHandler pour envoyer des réponses d'erreur. Cas pratique : Gestion des requêtes invalides : envoi d'une réponse d'erreur selon la méthode de requête. Gestion des erreurs internes du serveur : utilisez defer recovery() pour intercepter les exceptions et envoyer des réponses d'erreur. Gérez les autres exceptions : gérez-les de la même manière.

如何在 Golang 中处理 HTTP 异常?

Comment gérer les exceptions HTTP dans Golang

Lors de l'écriture d'un programme Golang pour gérer les requêtes HTTP, vous pouvez rencontrer des situations anormales, telles que l'envoi d'une requête invalide par le client, une erreur de serveur interne ou un problème de connexion réseau. Une gestion appropriée de ces exceptions est importante pour créer des applications robustes et conviviales.

Gestionnaire d'erreurs HTTP personnalisé

Pour les conditions d'erreur connues, nous pouvons créer des gestionnaires d'erreurs HTTP personnalisés pour gérer les exceptions. La fonction http.Error peut être utilisée pour envoyer des réponses d'erreur personnalisées : http.Error 函数可以用来发送自定义错误响应:

import (
    "net/http"
)

func errorHandler(w http.ResponseWriter, r *http.Request, status int) {
    http.Error(w, http.StatusText(status), status)
}

内置异常处理

Golang 提供了对内置异常(例如panicrecover)的支持。recover()

func recoverHandler(w http.ResponseWriter, r *http.Request) {
    defer func() {
        if err := recover(); err != nil {
            errorHandler(w, r, http.StatusInternalServerError)
        }
    }()

    // 业务逻辑
}

Gestion intégrée des exceptions

Golang prend en charge les exceptions intégrées telles que panic et récupérer). La fonction <code>recover() peut reprendre l'exécution du programme après une exception et renvoyer la valeur de l'exception :

import "net/http"

func invalidRequestHandler(w http.ResponseWriter, r *http.Request) {
    if r.Method != "GET" {
        errorHandler(w, r, http.StatusBadRequest)
        return
    }

    // 处理 GET 请求
}
Cas pratique

Scénario : Gestion des requêtes invalides

import "net/http"

func internalErrorHandler(w http.ResponseWriter, r *http.Request) {
    defer func() {
        if err := recover(); err != nil {
            errorHandler(w, r, http.StatusInternalServerError)
        }
    }()

    // 业务逻辑

    // 如果业务逻辑引发异常,程序将恢复执行并发送错误响应
}

Scénario : Gestion des requêtes invalides erreurs internes du serveur

🎜rrreee🎜Avec ces méthodes, nous pouvons gérer les exceptions HTTP avec élégance, renvoyer des réponses d'erreur significatives au client et empêcher l'application de planter en raison d'erreurs inattendues. 🎜

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn