Heim >Backend-Entwicklung >Golang >Sollte ich das HTTP-Antwortobjekt nach einem „http.Get()'-Fehler schließen?

Sollte ich das HTTP-Antwortobjekt nach einem „http.Get()'-Fehler schließen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-18 02:12:10762Durchsuche

Should I Close the HTTP Response Object After an `http.Get()` Error?

Müssen wir das Antwortobjekt schließen, wenn beim Aufruf von http.Get(url) ein Fehler auftritt?

Beim Aufruf von http.Get (URL) können Sie auf ein Szenario stoßen, in dem während der Anfrage ein Fehler auftritt. In solchen Fällen stellt sich die Frage: Ist es unbedingt erforderlich, das Antwortobjekt zu schließen?

Antwort:

Gemäß dem allgemeinen Programmierprinzip, wenn eine Funktion mehrere Werte zurückgibt , einschließlich eines Fehlers, sollten Sie zuerst den Fehlerwert überprüfen. Wenn ein Fehler vorliegt (err != nil), sollten Sie entsprechende Maßnahmen ergreifen und nur fortfahren, wenn der Fehlerwert null ist.

Im Fall von http.Get() folgt es diesem Konzept. Wenn ein Fehler auftritt, wird eine Null-Antwort zurückgegeben, etwa:

return nil, someError

Daher sollten Sie wie folgt damit umgehen:

res, err := http.Get(url)
if err != nil {
    log.Printf("Error: %s\n", err)
    return
}

defer res.Body.Close()
// Read/work with body

Es ist bemerkenswert, dass selbst wenn ein Fehler auftritt und a Wenn aufgrund von Umleitungsfehlern eine Antwort ungleich Null zurückgegeben wird, müssen Sie den Antworttext trotzdem nicht schließen. Wenn Sie jedoch darauf bestehen, können Sie bedingte Prüfungen verwenden wie:

if res != nil {
    defer res.Body.Close()
}

Die Dokumentation von http.Response stellt sicher, dass die Body-Eigenschaft niemals Null ist, unabhängig davon, ob Antwortdaten vorhanden sind oder nicht .

Das obige ist der detaillierte Inhalt vonSollte ich das HTTP-Antwortobjekt nach einem „http.Get()'-Fehler schließen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn