为了账号安全,请及时绑定邮箱和手机立即绑定

去 http 恐慌服务

去 http 恐慌服务

Go
吃鸡游戏 2021-11-15 20:53:37
我得到了这种恐慌:C:\Users\loow\Desktop\USBWebserver v8.5\duplicate_submissions>go run server.go2015/10/23 13:00:39 http: panic serving [::1]:63867: runtime error: invalid memory address or nil pointer dereferencegoroutine 5 [running]:net/http.(*conn).serve.func1(0xc0820a1810, 0x3b55b8, 0xc082024040)        c:/go/src/net/http/server.go:1287 +0xbcmain.login(0x2990058, 0xc0820d4000, 0xc0820be1c0)        C:/Users/loow/Desktop/USBWebserver v8.5/duplicate_submissions/server.go:27 +0x5a5net/http.HandlerFunc.ServeHTTP(0x8326a8, 0x2990058, 0xc0820d4000, 0xc0820be1c0)        c:/go/src/net/http/server.go:1422 +0x41net/http.(*ServeMux).ServeHTTP(0xc082062360, 0x2990058, 0xc0820d4000, 0xc0820be1c0)        c:/go/src/net/http/server.go:1699 +0x184net/http.serverHandler.ServeHTTP(0xc08200c360, 0x2990058, 0xc0820d4000, 0xc0820be1c0)        c:/go/src/net/http/server.go:1862 +0x1a5net/http.(*conn).serve(0xc0820a1810)        c:/go/src/net/http/server.go:1361 +0xbf5created by net/http.(*Server).Serve        c:/go/src/net/http/server.go:1910 +0x3fd2015/10/23 13:00:39 http: panic serving [::1]:63868: runtime error: invalid memory address or nil pointer dereferencegoroutine 33 [running]:net/http.(*conn).serve.func1(0xc082114000, 0x3b55b8, 0xc082112000)        c:/go/src/net/http/server.go:1287 +0xbcmain.login(0x2990058, 0xc0821140b0, 0xc0821200e0)        C:/Users/loow/Desktop/USBWebserver v8.5/duplicate_submissions/server.go:27 +0x5a5net/http.HandlerFunc.ServeHTTP(0x8326a8, 0x2990058, 0xc0821140b0, 0xc0821200e0)        c:/go/src/net/http/server.go:1422 +0x41net/http.(*ServeMux).ServeHTTP(0xc082062360, 0x2990058, 0xc0821140b0, 0xc0821200e0)        c:/go/src/net/http/server.go:1699 +0x184net/http.serverHandler.ServeHTTP(0xc08200c360, 0x2990058, 0xc0821140b0, 0xc0821200e0)        c:/go/src/net/http/server.go:1862 +0x1a5net/http.(*conn).serve(0xc082114000)        c:/go/src/net/http/server.go:1361 +0xbf5created by net/http.(*Server).Serve        c:/go/src/net/http/server.go:1910 +0x3fdexit status 2
查看完整描述

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也必须这样做。


顺便说一句,这被称为“逗号确定”模式


查看完整回答
反对 回复 2021-11-15
  • 1 回答
  • 0 关注
  • 233 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信