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

3 回复

抱歉,我目前有些疏忽。我原以为我的函数在 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行没有这个问题,检查是否有其他文件也调用了同一个函数,或者是否有条件编译导致的不同版本函数定义。

回到顶部