我想知道是否有更好的方法来处理调试应用程序中的错误。我想设置一个像“调试”这样的标志,它会显示函数返回的真实错误(例如来自 sql)。如果未设置,我希望它返回一条通用消息。
我在这里做了一些这样工作的东西: http://play.golang.org/p/YDeqVvRSMd
一般的想法是我将真正的错误和我的股票错误传递给一个函数,它检查是否设置了调试:
func ErrorMsg(debug, error_type error) map[string]interface{} {
var msg error
if Debug {
msg = debug
} else {
msg = error_type
}
err := map[string]interface{}{"error_message": msg}
return err
}
然而,这有点像一个丑陋的解决方案。有没有更好的方法来实现这一点?
我还想返回一个 JSON 响应,这就是它是 map 的原因。
最佳答案
Go 是一种非常冗长的语言,您无法清理该代码,这里有一个稍微简短的版本:
func ErrorMsg(debug, error_type error) map[string]interface{} {
msg := error_type
if Debug {
msg = debug
}
return map[string]interface{}{"error_message": msg}
}
或者你也可以把所有的map一起丢掉,直接返回错误,在error结构体上设置json标签:
type RequestError struct {
ErrorString string `json:"error_message"`
}
func ErrorMsg(debug, error_type error) (err error) {
err = error_type
if Debug {
err = debug
}
return
}
关于json - 在 Go 中处理调试错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26168036/