2 回答
TA贡献1890条经验 获得超9个赞
不要惊慌(),你的程序不会退出。您可以使用日志。例如,Println(err)和从那里更精确地处理何时要记录以及何时要panic()。
“panic 内置函数会停止当前 goroutine 的正常执行。当函数 F 调用 panic 时,F 的正常执行会立即停止。任何执行由 F 延迟的函数都以通常的方式运行,然后 F 返回到其调用方。对于调用方 G,F 的调用就像调用 panic 一样,终止 G 的执行并运行任何延迟函数。这将一直持续到执行 goroutine 中的所有函数都以相反的顺序停止。此时,程序以非零退出代码终止。这种终止序列称为恐慌,可以通过内置函数恢复来控制。
您也可以从错误中恢复,但这意味着您必须恢复并开始从下一行读取日志,我认为这不是您想要的。你只是在你不想恐慌的上下文中使用panic()。在无法进一步执行的情况下使用 panic。
希望这有帮助。
TA贡献1808条经验 获得超4个赞
如果返回的数组长度为零,我返回了nil值。现在,该函数如下所示。
func analyzeLog(s string) (*time.Time, bool) {
res := regexp.MustCompile(LogLineRegex).FindAllStringSubmatch(s, 1)
if len(res) == 0 {
return nil, false
}
timeString := res[0][1]
description := res[0][2]
t, err := time.Parse(TimeFormat, timeString)
check(err)
return &t, strings.HasPrefix(description, ErrorTerm)
}
- 2 回答
- 0 关注
- 142 浏览
添加回答
举报