gpt4 book ai didi

go - 当 HTTP 客户端向不可用的 URL 发出请求时如何捕捉 panic ?

转载 作者:数据小太阳 更新时间:2023-10-29 03:42:16 25 4
gpt4 key购买 nike

我需要向某些 URL 发出请求。有可能他们中的某个人不可用。这对我来说没问题,我只想忽略这些 URL。

我的问题是我无法捕获发生的错误。我收到一条错误消息:

2018/01/13 18:46:24 Get http://fakesite.com: dial tcp [::1]:8084: connectex: No connection could be made because the target machine actively refused it.

我的示例代码是:

package main

import (
"fmt"
"log"
"net/http"
"io/ioutil"
)

func main() {
c := make(chan string, 1)

go func() {
defer func() {
if r := recover(); r != nil {
fmt.Println("try to catch error1", r)
}
}()

resp, err := http.Get("http://fakesite.com")
if err != nil {
log.Fatal(err)
c <- ""
return
}

defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
c <- ""
return
}

c <- string(body)
}()


defer func() {
if r := recover(); r != nil {
fmt.Println("try to catch error2", r)
}
}()

msg := <-c
fmt.Println(msg)
}

最佳答案

问题是:

log.Fatal(err)

这个函数执行两件事。首先,它记录。但是这个功能也存在。

// Fatal is equivalent to Print() followed by a call to os.Exit(1).
func Fatal(v ...interface{}) {
std.Output(2, fmt.Sprint(v...))
os.Exit(1)
}

关于go - 当 HTTP 客户端向不可用的 URL 发出请求时如何捕捉 panic ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48241532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com