json - 在 Go 中处理调试错误

标签 json http error-handling go

我想知道是否有更好的方法来处理调试应用程序中的错误。我想设置一个像“调试”这样的标志,它会显示函数返回的真实错误(例如来自 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
}

playground

关于json - 在 Go 中处理调试错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26168036/

相关文章:

java - 使用 Fql 并尝试使用 JSON 解析结果

javascript - 如何使用javascript和html上传json文件并将其转换为excel文件

node.js - 在 express 中获取原始请求以及正文文本

c# - 处理未定义抽象方法C#的调用

java - errorString() 方法的异常的优点/缺点

javascript - 使用 AJAX 根据数据库输出动态附加 <tr>

iphone - 是否有关于如何使用基于 C 的 YAJL 库解析简单 JSON 文件的简单示例?

http - 为什么我从亚马逊弹性负载均衡器后面发送重定向时会收到 502 错误网关?

java - 如何找出缺少哪个 Java 类定义/要导入哪些依赖项?

jsf-2 - 从 Facelets 错误页面引用 CDI 托管 bean