Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk mengendalikan ralat HTTP di Golang?
Mengendalikan ralat HTTP di Golang adalah penting untuk bertindak balas dengan anggun kepada pelbagai keadaan ralat dalam permintaan pelanggan. Terdapat beberapa cara untuk mengendalikan ralat: Gunakan jenis ralat terbina dalam (contohnya: ErrBadRequest) untuk mewakili ralat HTTP biasa. Cipta jenis ralat tersuai untuk mengendalikan keadaan ralat tersuai. Gunakan fungsi httputil.NewError untuk mencipta ralat baharu berdasarkan kod status dan mesej.
Mengendalikan ralat HTTP di Golang adalah sangat penting kerana ia membolehkan anda bertindak balas dengan anggun kepada pelbagai keadaan ralat dalam permintaan pelanggan. Golang menyediakan beberapa cara untuk mengendalikan ralat, termasuk pakej errors
terbina dalam. errors
包。
Golang 提供了几个内置的错误类型来表示常见的 HTTP 错误,例如:
import "net/http" var ( ErrBadRequest = http.StatusBadRequest ErrUnauthorized = http.StatusUnauthorized ErrForbidden = http.StatusForbidden ErrNotFound = http.StatusNotFound ErrMethodNotAllowed = http.StatusMethodNotAllowed )
这些错误类型可以用来返回给客户端,表示特定的错误情况。
如果你需要处理自定义的错误情况,你可以创建自己的错误类型:
type MyError struct { code int message string } func (e *MyError) Error() string { return fmt.Sprintf("code: %d, message: %s", e.code, e.message) }
然后你可以在处理函数中返回这个自定义错误:
func HandleRequest(w http.ResponseWriter, r *http.Request) { if err := validateRequest(r); err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } // ... 继续处理请求 }
httputil.NewError
net/http/httputil
包提供了 NewError
函数,它可以根据给定的状态码和错误消息创建一个新的 error
err := httputil.NewError(http.StatusBadRequest, "Bad Request")Jenis ralat ini boleh digunakan untuk kembali kepada klien untuk mewakili keadaan ralat tertentu. Gunakan jenis ralat tersuai
Jika anda perlu mengendalikan keadaan ralat tersuai, anda boleh mencipta jenis ralat anda sendiri:
func HandleRequest(w http.ResponseWriter, r *http.Request) { switch r.Method { case "GET": // ... 处理 GET 请求 case "POST": // ... 处理 POST 请求 default: http.Error(w, "Method Not Allowed", http.StatusMethodNotAllowed) } }Kemudian anda boleh mengembalikan ralat tersuai ini dalam fungsi pengendali: 🎜
type InvalidRequestError struct { message string } func (e InvalidRequestError) Error() string { return fmt.Sprintf("invalid request: %s", e.message) } func HandleRequest(w http.ResponseWriter, r *http.Request) { if err := validateRequest(r); err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } // ... 继续处理请求 }🎜Gunakan
net/http/httputil
menyediakan fungsi NewError
, yang boleh mencipta baharu berdasarkan kod status dan mesej ralat yang diberikan. kod>ralat
: 🎜rrreee🎜Kes praktikal🎜🎜🎜Contoh 1: Menggunakan jenis ralat terbina dalam🎜🎜rrreee🎜🎜Contoh 2: Menggunakan jenis ralat tersuai🎜🎜rreeAtas ialah kandungan terperinci Bagaimana untuk mengendalikan ralat HTTP di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!