如何使用方法编写延迟块返回错误

当我编写一个返回带有延迟的错误的方法时,是不可能的。 IDE linter等会警告它。

为了避免这种情况,我编写了以下代码。

package main

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

func main() {
    req,_ := http.NewRequest("GET","https://example.com",nil)
    cli := &http.Client{}
    res,_ := cli.Do(req)

    defer func() {
        _ = res.Body.Close() // catch the error
    }()

    b,_ := ioutil.ReadAll(res.Body)
    log.Println(string(b))
}

michaelwong2009 回答:如何使用方法编写延迟块返回错误

这里的问题不是延期,实际上是您使用res.Body而没有检查res.Body == nil

的事实。

因此,cli.Do(req)返回错误而对res为nil时,错误处理将丢失。

您仍然可以通过添加检查结果是否为零来执行相同的操作。 或者,您可以在cli.Do(req)返回错误

时提前停止

这里是一个示例https://play.golang.org/p/pnETOjhNCKs

本文链接:https://www.f2er.com/3162011.html

大家都在问