Em aplicativos Go, como podemos melhorar o tratamento de erros definindo um tipo de erro personalizado, como appError, e implementando um manipulador personalizado para detectar erros e gravá-los na resposta?
Gin incentiva o uso de middleware para lidar com respostas de erro e separar a lógica de erro da lógica de fluxo normal. Para implementar o tratamento de erros centralizado no Gin:
router.Use(JSONAppErrorReporter())
func JSONAppErrorReporter() gin.HandlerFunc {
return func(c *gin.Context) {
c.Next()
detectedErrors := c.Errors.ByType(gin.ErrorTypeAny)
if len(detectedErrors) > 0 {
err := detectedErrors[0].Err
processedError := getProcessedError(err)
c.JSON(processedError.Code, processedError)
c.Abort()
}
}
}
if err != nil {
c.Error(err)
return
}
Essa abordagem permite que você lide com erros centralmente e forneça respostas de erro consistentes.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3