亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

調用http.Get時golang恐慌

調用http.Get時golang恐慌

Go
鳳凰求蠱 2021-12-07 17:11:49
錯誤信息:goroutine 11357 [runnable]:net.runtime_pollWait(0x1737f28, 0x77, 0x4fa90)    /usr/local/go/src/runtime/netpoll.go:157 +0x60net.(*pollDesc).Wait(0xc829571bf0, 0x77, 0x0, 0x0)    /usr/local/go/src/net/fd_poll_runtime.go:73 +0x3anet.(*pollDesc).WaitWrite(0xc829571bf0, 0x0, 0x0)    /usr/local/go/src/net/fd_poll_runtime.go:82 +0x36net.(*netFD).connect(0xc829571b90, 0x0, 0x0, 0x1714f80, 0xc829572f20, 0xece412272, 0x33aa2325, 0x473ea0, 0x0, 0x0)    /usr/local/go/src/net/fd_unix.go:114 +0x1f6net.(*netFD).dial(0xc829571b90, 0x1714f38, 0x0, 0x1714f38, 0xc8295755c0, 0xece412272, 0x33aa2325, 0x473ea0, 0x0, 0x0)    /usr/local/go/src/net/sock_posix.go:137 +0x351net.socket(0x3050e8, 0x3, 0x2, 0x1, 0x0, 0xc829575500, 0x1714f38, 0x0, 0x1714f38, 0xc8295755c0, ...)    /usr/local/go/src/net/sock_posix.go:89 +0x411net.internetSocket(0x3050e8, 0x3, 0x1714f38, 0x0, 0x1714f38, 0xc8295755c0, 0xece412272, 0xc833aa2325, 0x473ea0, 0x1, ...)    /usr/local/go/src/net/ipsock_posix.go:160 +0x141net.dialTCP(0x3050e8, 0x3, 0x0, 0xc8295755c0, 0xece412272, 0xc833aa2325, 0x473ea0, 0x2, 0x0, 0x0)    /usr/local/go/src/net/tcpsock_posix.go:171 +0x11enet.dialSingle(0xc829580b80, 0x1714ea8, 0xc8295755c0, 0xece412272, 0x33aa2325, 0x473ea0, 0x0, 0x0, 0x0, 0x0)    /usr/local/go/src/net/dial.go:364 +0x3f5net.dialSerial.func1(0xece412272, 0x33aa2325, 0x473ea0, 0x0, 0x0, 0x0, 0x0)    /usr/local/go/src/net/dial.go:336 +0x75net.dial(0x3050e8, 0x3, 0x1714ea8, 0xc8295755c0, 0xc8232f96e8, 0xece412272, 0x33aa2325, 0x473ea0, 0x0, 0x0, ...)    /usr/local/go/src/net/fd_unix.go:40 +0x60net.dialSerial(0xc829580b80, 0xc829572f00, 0x2, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0)    /usr/local/go/src/net/dial.go:338 +0x760net.(*Dialer).Dial(0xc8200783c0, 0x3050e8, 0x3, 0xc823166ed0, 0x10, 0x0, 0x0, 0x0, 0x0)    /usr/local/go/src/net/dial.go:232 +0x50f
查看完整描述

2 回答

?
手掌心

TA貢獻1942條經驗 獲得超3個贊

resp, err := http.Get(url)

defer resp.Body.Close()

if err != nil {

    fmt.Println("err:", err)

    return

}

如果err!= nil,則resp==nil,因此會因 nil 指針取消引用而崩潰。使用以下方法修復您的代碼:


resp, err := http.Get(url)

if err != nil {

    fmt.Println("err:", err)

    return

}

defer resp.Body.Close()


查看完整回答
反對 回復 2021-12-07
?
小怪獸愛吃肉

TA貢獻1852條經驗 獲得超1個贊

由于使用系統(基于 cgo)解析的同時主機名解析,您可能會達到單個 go 進程的 os 線程限制。要使用每個解析請求不占用一個系統線程的純解析,請嘗試GOBEBUG像這樣設置環境變量export GODEBUG=netdns=go(請參閱https://golang.org/pkg/net doc,“名稱解析”部分)。

單個 Go 進程的默認 os 線程限制設置為 10000:https : //golang.org/pkg/runtime/debug/#SetMaxThreads

此外,您似乎正在運行最新的 Go 運行時,默認情況下它會輸出單個 goroutine 的跟蹤;使用GOTRACEBACK=all環境變量集運行將為您提供更大的堆棧跟蹤 - 完整發布它總是更好。


查看完整回答
反對 回復 2021-12-07
  • 2 回答
  • 0 關注
  • 228 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號