Heim > Backend-Entwicklung > Golang > Panik geraten: Ungültige Speicheradresse oder Null-Zeiger-Dereferenzierung: Wie kann eine falsche Fehlerbehandlung behoben werden?

Panik geraten: Ungültige Speicheradresse oder Null-Zeiger-Dereferenzierung: Wie kann eine falsche Fehlerbehandlung behoben werden?

DDD
Freigeben: 2025-01-05 13:00:40
Original
239 Leute haben es durchsucht

Go Panic: Invalid Memory Address or Nil Pointer Dereference: How to Fix Incorrect Error Handling?

Go: Panic: Laufzeitfehler: Ungültige Speicheradresse oder Null-Pointer-Dereferenzierung

Beim Ausführen eines Go-Programms kann es zu einer Panik kommen die folgende Fehlermeldung:

panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x38 pc=0x26df]
Nach dem Login kopieren

Dieser Fehler weist häufig auf ein Problem in der Art und Weise hin, wie Ihr Programm Speicheradressen verarbeitet oder Hinweise. Lassen Sie uns eine mögliche Ursache aufschlüsseln:

Problem:Falsche Fehlerbehandlung

Im bereitgestellten Go-Code gibt es ein Problem in der getBody-Funktion bei der Verarbeitung der Antwort vom HTTP client:

if err != nil {
    return nil, err
}
...
if err != nil {
    return nil, err
}
Nach dem Login kopieren

Die erste if err != nil-Prüfung erfolgt vor dem Zugriff auf die Antwort body:

if err != nil {
    return nil, err
}

res, err := client.Do(req)
Nach dem Login kopieren

Die Defer-Anweisung zum Schließen des Antworttextes (res.Body) wird jedoch sofort ausgeführt, noch vor der Fehlerprüfung. Dies könnte zu einem vorzeitigen Versuch führen, den Körper zu schließen, und zum Fehler „Ungültige Speicheradresse“ führen.

Lösung:

Um dieses Problem zu beheben, verschieben Sie den Fehler Überprüfen Sie, bevor Sie auf den Antworttext zugreifen und ihn schließen:

res, err := client.Do(req)

if err != nil {
    return nil, err
}

defer res.Body.Close()
Nach dem Login kopieren

Auf diese Weise prüft der Code korrekt, ob potenzielle Fehler vorliegen, bevor er mit dem Antworttext arbeitet, und verhindert so das Fehler „ungültige Speicheradresse“.

Das obige ist der detaillierte Inhalt vonPanik geraten: Ungültige Speicheradresse oder Null-Zeiger-Dereferenzierung: Wie kann eine falsche Fehlerbehandlung behoben werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage