Heim >Backend-Entwicklung >Golang >Go HTTP Client: Wie vermeide ich „Panik: Laufzeitfehler: ungültige Speicheradresse oder Null-Zeiger-Dereferenzierung'?
Go: Panik: Laufzeitfehler: ungültige Speicheradresse oder Nullzeiger-Dereferenzierung
Beim Ausführen eines Go-Programms kann es aufgrund von zu einer Panik kommen eine ungültige Speicheradresse oder eine Null-Zeiger-Dereferenzierung. Diese Fehlermeldung weist häufig eher auf ein Laufzeitproblem als auf einen bestimmten Programmfehler hin.
In diesem Fall zeigt der bereitgestellte Go-Code potenzielle Probleme bei der HTTP-Client-Verarbeitung.
Das Problem
Der Code verwendet die Methode func (*Client) Do, um HTTP-Anfragen zu stellen. Es wird jedoch nicht geprüft, ob vom Client zurückgegebene Fehler vorliegen, bevor versucht wird, auf den Antworttext zuzugreifen.
Die Lösung
Laut der Dokumentation für func (*Client) Tun Sie dies auch dann, wenn ein Nicht-2xx-HTTP-Statuscode empfangen wird, führt dies nicht zu einem Fehler. Stattdessen wird der Fehler nur zurückgegeben, wenn er durch eine Client-Richtlinie oder einen HTTP-Protokollfehler verursacht wird.
Der Code prüft jedoch nach dem Zugriff auf den Antworttext (res.Body) auf Fehler. Dies kann dazu führen, dass aufgrund einer ungültigen Speicheradresse oder einer Null-Zeiger-Dereferenzierung ein Fehler ausgegeben wird.
Um dieses Problem zu beheben, sollte der Code so geändert werden, dass vor dem Zugriff auf den Antworttext nach Fehlern gesucht wird, etwa so:
res, err := client.Do(req) if err != nil { return nil, err } defer res.Body.Close()
Das obige ist der detaillierte Inhalt vonGo HTTP Client: Wie vermeide ich „Panik: Laufzeitfehler: ungültige Speicheradresse oder Null-Zeiger-Dereferenzierung'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!