1 回答
TA贡献1772条经验 获得超8个赞
恐慌堆栈跟踪为您提供以下信息:
2015/10/23 13:00:39 http: panic serving [::1]:63868: runtime error: invalid memory address or nil pointer dereference goroutine 33 [running]:
这意味着您正在尝试访问不存在的内容(空指针)。
然后来自您的文件的第一行是这样的:
v8.5/duplicate_submissions/server.go:27
那里有:
26: t, err := template.ParseFiles("templates/index.gtpl")
27: fmt.Println(err.Error())
28: err = t.Execute(w, token)
这意味着 err 为零。
解决方案
如果出现错误,则无法继续该过程。这就是为什么你不能只打印出错误的原因。为了优雅地停止该过程,您需要返回一个 HTTP 状态代码然后返回。对于上述情况,您可以返回代码 500(内部服务器错误)。
t, err := template.ParseFiles("templates/index.gtpl")
if err != nil {
fmt.Println(err) // Ugly debug output
w.WriteHeader(http.StatusInternalServerError) // Proper HTTP response
return
}
对于template.ParseFiles和t.Execute也必须这样做。
顺便说一句,这被称为“逗号确定”模式
- 1 回答
- 0 关注
- 233 浏览
添加回答
举报