Heim >Backend-Entwicklung >Golang >Wie kann ich „Laufzeitfehler: ungültige Speicheradresse oder Null-Zeiger-Dereferenzierung' in My Go Web Crawler verhindern?

Wie kann ich „Laufzeitfehler: ungültige Speicheradresse oder Null-Zeiger-Dereferenzierung' in My Go Web Crawler verhindern?

DDD
DDDOriginal
2024-12-09 02:24:14968Durchsuche

How Can I Prevent

Verstehen des Problems „Laufzeitfehler: ungültige Speicheradresse oder Null-Zeiger-Dereferenzierung“

Bei der Go-Programmierung tritt der „Laufzeitfehler: ungültige Speicheradresse oder Null-Zeiger-Dereferenzierung“ auf Tritt häufig auf, wenn auf ungültigen Speicher zugegriffen oder dieser dereferenziert wird. Dieser Fehler kann in verschiedenen Kontexten auftreten, einschließlich Netzwerkvorgängen wie HTTP-Anfragen.

Fehlerbehebung beim Webcrawler

Bei Ihrem Webcrawler hängt der Fehler wahrscheinlich mit dem Zugriff auf den Antworttext (bzw. Body) zusammen zunächst auf Fehler prüfen. Wenn in der basicFetcher-Funktion beispielsweise http.Get einen Fehler zurückgibt, ist die resp-Variable null und nachfolgende Versuche, auf resp.Body zuzugreifen, schlagen aufgrund der Null-Zeiger-Dereferenzierung fehl.

Richtige Fehlerbehandlung

Um dieses Problem zu beheben, ist es wichtig, Fehler angemessen zu behandeln. Erwägen Sie, Ihre basicFetcher-Funktion wie folgt zu ändern:

func basicFetcher(uri string, c chan int) {
    resp, err := http.Get(uri)
    if err != nil {
        fmt.Println(err)
        return
    }
    defer resp.Body.Close()
    _, err = ioutil.ReadAll(resp.Body)
    if err != nil {
        fmt.Println(err)
        return
    }
    c <- resp.StatusCode
}

Wenn nun http.Get oder ioutil.ReadAll auf einen Fehler stößt, kehrt die Funktion ordnungsgemäß zurück und verhindert so den Nullzeiger-Dereferenzierungsfehler.

Fehlerergebnisse zurückgeben

Wie von twotwotwo vorgeschlagen, ist es eine gute Praxis, ein (Ergebnis-, Fehler-)Paar zurückzugeben aus Ihren Funktionen. Dadurch können Sie Fehler behandeln und die Funktion bei Bedarf beenden. Durch die Rückgabe eines Fehlers können Sie mehr Kontext für den Fehler bereitstellen und eine bessere Fehlerbehandlung in Ihrer Hauptfunktion ermöglichen.

Das obige ist der detaillierte Inhalt vonWie kann ich „Laufzeitfehler: ungültige Speicheradresse oder Null-Zeiger-Dereferenzierung' in My Go Web Crawler verhindern?. 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