Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk mengendalikan pengecualian HTTP di Golang?
Bagaimana untuk mengendalikan pengecualian HTTP? Di Golang, pengendalian pengecualian HTTP termasuk kaedah berikut: Pengendali ralat HTTP tersuai: Gunakan http.Error untuk menyesuaikan respons ralat. Pengendalian pengecualian terbina dalam: gunakan recover() untuk memulihkan pengecualian dan errorHandler untuk menghantar respons ralat. Kes praktikal: Mengendalikan permintaan tidak sah: menghantar respons ralat mengikut kaedah permintaan. Mengendalikan ralat dalaman pelayan: Gunakan defer recover() untuk menangkap pengecualian dan menghantar respons ralat. Mengendalikan pengecualian lain: mengendalikannya dengan cara yang sama.
Apabila menulis program Golang untuk mengendalikan permintaan HTTP, anda mungkin menghadapi situasi yang tidak normal, seperti pelanggan menghantar permintaan yang tidak sah, ralat pelayan dalaman atau masalah sambungan rangkaian. Pengendalian yang betul bagi pengecualian ini adalah penting untuk membina aplikasi yang mantap dan mesra pengguna.
Untuk keadaan ralat yang diketahui, kami boleh mencipta pengendali ralat HTTP tersuai untuk mengendalikan pengecualian. Fungsi http.Error
boleh digunakan untuk menghantar respons ralat tersuai: http.Error
函数可以用来发送自定义错误响应:
import ( "net/http" ) func errorHandler(w http.ResponseWriter, r *http.Request, status int) { http.Error(w, http.StatusText(status), status) }
Golang 提供了对内置异常(例如panic
和recover
)的支持。recover()
func recoverHandler(w http.ResponseWriter, r *http.Request) { defer func() { if err := recover(); err != nil { errorHandler(w, r, http.StatusInternalServerError) } }() // 业务逻辑 }Pengendalian pengecualian terbina dalamGolang menyediakan sokongan untuk pengecualian terbina dalam (seperti
panik
dan sokongan recover
). Fungsi recover()
boleh menyambung semula pelaksanaan program selepas pengecualian berlaku dan mengembalikan nilai pengecualian: import "net/http" func invalidRequestHandler(w http.ResponseWriter, r *http.Request) { if r.Method != "GET" { errorHandler(w, r, http.StatusBadRequest) return } // 处理 GET 请求 }Kes praktikal
Senario: Mengendalikan permintaan yang tidak sah
import "net/http" func internalErrorHandler(w http.ResponseWriter, r *http.Request) { defer func() { if err := recover(); err != nil { errorHandler(w, r, http.StatusInternalServerError) } }() // 业务逻辑 // 如果业务逻辑引发异常,程序将恢复执行并发送错误响应 }
HandlingScenario ralat pelayan dalaman
🎜rrreee🎜Dengan kaedah ini, kami boleh mengendalikan pengecualian HTTP dengan anggun, mengembalikan respons ralat yang bermakna kepada pelanggan dan menghalang aplikasi daripada ranap akibat ralat yang tidak dijangka. 🎜Atas ialah kandungan terperinci Bagaimana untuk mengendalikan pengecualian HTTP di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!