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!