Apabila membina aplikasi web menggunakan rangka kerja Gin, adalah perkara biasa untuk mengendalikan ralat dalam setiap laluan pengendali. Ini boleh membawa kepada pendekatan yang menyusahkan dan berlebihan, terutamanya apabila mengendalikan berbilang ralat HTTP. Gin menyediakan penyelesaian yang lebih elegan melalui penggunaan middleware pengendalian ralat.
Daripada mengendalikan ralat secara eksplisit dalam setiap laluan, kami boleh mencipta perisian tengah yang memintas ralat dan menyediakan cara terpusat untuk mengendalikannya. Fungsi middleware harus termasuk langkah berikut:
<code class="go">func ErrorHandler(c *gin.Context) { // Proceed to the next handler in the chain c.Next() // Iterate over the errors that occurred during the request handling for _, err := range c.Errors { // Log the error or perform any other necessary operations logger.Error("whoops", ...) // Send an HTTP response with the appropriate status (or -1 to omit overwriting) c.JSON(-1, /* error payload */) } }</code>
Middleware ditambahkan pada penghala menggunakan kaedah Use:
<code class="go">router := gin.New() router.Use(middleware.ErrorHandler)</code>
Dalam pengendali laluan, bukannya mengendalikan ralat secara manual, kita boleh membatalkan permintaan dengan status HTTP yang sesuai:
<code class="go">func (h *Handler) List(c *gin.Context) { movies, err := h.service.ListService() if err != nil { c.AbortWithError(http.StatusInternalServerError, err) return } c.JSON(http.StatusOK, movies) }</code>
Dalam perisian tengah, kita boleh memeriksa ralat asal dengan mengakses medan Err gin.Jenis ralat :
<code class="go">for _, err := range c.Errors { switch err.Err { case ErrNotFound: c.JSON(-1, gin.H{"error": ErrNotFound.Error()}) } // etc... }</code>
Kelebihan menggunakan perisian tengah ialah ia membolehkan kami mengumpul berbilang ralat semasa pengendalian permintaan. Selain itu, kami boleh menambah maklumat kontekstual pada ralat, seperti ID pengguna, URL permintaan dan banyak lagi. Maklumat ini boleh digunakan untuk pengelogan dan pelaporan ralat yang lebih terperinci.
Dengan menggunakan pengendalian ralat berasaskan middleware dalam Gin, kami boleh memusatkan dan memudahkan pengendalian ralat, meningkatkan kebolehbacaan kod dan meningkatkan keupayaan pembalakan ralat. Pendekatan ini lebih idiomatik dan memberikan fleksibiliti untuk mengendalikan ralat tersuai dan mengumpul berbilang ralat semasa kitaran hayat permintaan.
Atas ialah kandungan terperinci Bagaimana Mengendalikan Ralat dalam Peranti Tengah Gin: Pendekatan Berpusat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!