Golang中如何正确读取错误信息
Golang中如何正确读取错误信息 以下是我在尝试运行自己编写的Go服务时遇到的错误示例:
../../signals/signals.go:48:20: not enough arguments in call to logging.LogError
have (string, string)
want (int, int, string, http.ResponseWriter)
问题是,它没有告诉我调用函数时缺少参数的具体文件和行号,而是显示了函数本身及其所在文件。我已经检查了程序中的所有代码,没有发现任何缺少参数的地方。所以我卡住了,完全不知道问题出在哪里。
有什么建议吗?
更多关于Golang中如何正确读取错误信息的实战教程也可以访问 https://www.itying.com/category-94-b0.html
抱歉,我目前有些疏忽。我原以为我的函数在 signals.go 文件中,但实际上并不是。它在同一目录下的另一个文件中,而且实际上,如果我仔细听的话,它已经告诉了我问题所在。
一切都好。
更多关于Golang中如何正确读取错误信息的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
我进行了grep搜索,获取了调用LogError的位置列表:
goservertemplate.go: logging.LogError(0,0,msg, nil)
goservertemplate.go: logging.LogError( 0, 500, "No Database Connection Exists", w )
goservertemplate.go: logging.LogError( 0, 500, "Problem running query.", w )
goservertemplate.go: logging.LogError( 0, 500, "There was a problem retrieving data.", w )
以下是函数本身:
func (lf *LogFile) LogError( errcode int,
httpcode int,
errtext string,
w http.ResponseWriter ) {
这个错误信息实际上已经提供了足够的信息来定位问题。错误格式是标准的Go编译器输出,让我们来解析一下:
../../signals/signals.go:48:20: not enough arguments in call to logging.LogError
have (string, string)
want (int, int, string, http.ResponseWriter)
错误信息包含:
- 文件路径:
../../signals/signals.go - 行号:
48 - 列号:
20 - 函数调用:
logging.LogError - 实际参数:
(string, string) - 期望参数:
(int, int, string, http.ResponseWriter)
问题出现在signals.go文件的第48行第20个字符位置。你调用logging.LogError函数时只提供了两个string参数,但函数定义需要四个参数:两个int、一个string和一个http.ResponseWriter。
检查第48行附近的代码:
// 错误的调用方式
logging.LogError("error message", "additional info")
// 正确的调用方式应该类似这样:
logging.LogError(500, 123, "error message", w) // w是http.ResponseWriter
具体解决方案取决于你的logging.LogError函数定义。如果函数签名是这样的:
func LogError(statusCode int, errorCode int, message string, w http.ResponseWriter) {
// 实现细节
}
那么你需要提供所有必需的参数。检查函数定义并确保调用时参数类型和数量完全匹配。
如果你确定第48行没有这个问题,检查是否有其他文件也调用了同一个函数,或者是否有条件编译导致的不同版本函数定义。

