Pengendalian Ralat yang Lebih Baik dengan Gin
Dalam artikel ini, kami akan meneroka cara melaksanakan pengendalian ralat yang lebih baik dengan Gin, diilhamkan oleh pendekatan digunakan dalam rangka kerja Go. Matlamat kami adalah untuk memusatkan pengendalian ralat, menjadikannya lebih mudah untuk mengurus dan mengurangkan kod pendua.
Jenis Ralat Tersuai
Serupa dengan appError tersuai taip dalam rangka kerja Go, mari tentukan jenis ralat tersuai untuk mengendalikan kod ralat dan mesej secara berstruktur:
<code class="go">type appError struct { Code int `json:"code"` Message string `json:"message"` }</code>
Perisian Tengah untuk Pelaporan Ralat
Untuk memusatkan pengendalian ralat, kita boleh mencipta perisian tengah yang akan mengendalikan respons ralat:
<code class="go">func JSONAppErrorReporter() gin.HandlerFunc { return jsonAppErrorReporterT(gin.ErrorTypeAny) } func jsonAppErrorReporterT(errType gin.ErrorType) gin.HandlerFunc { return func(c *gin.Context) { c.Next() detectedErrors := c.Errors.ByType(errType) // Process errors and convert them to our custom error type if len(detectedErrors) > 0 { err := detectedErrors[0].Err parsedError := parseAPperror(err) // Put error into response c.IndentedJSON(parsedError.Code, parsedError) c.Abort() } } }</code>
Dalam perisian tengah ini, ralat yang dikesan dihuraikan ke dalam jenis appError dan dikembalikan sebagai respons JSON.
Melaporkan Ralat dalam Pengendali
Untuk melaporkan ralat dalam fungsi pengendali, kami menggunakan gin.Context.Error():
<code class="go">func fetchSingleHostGroup(c *gin.Context) { hostgroupID := c.Param("id") hostGroupRes, err := getHostGroupResource(hostgroupID) if err != nil { c.Error(err) return } c.JSON(http.StatusOK, *hostGroupRes) }</code>
Faedah
Pendekatan ini memberikan beberapa faedah:
Sumber Tambahan
Untuk mendapatkan maklumat yang lebih mendalam dan penyelesaian alternatif, rujuk kepada sumber berikut:
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Pengendalian Ralat yang Lebih Baik dengan Gin?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!