Heim  >  Artikel  >  Backend-Entwicklung  >  Wie gehe ich mit JSON-Marshal-Fehlern in Go um?

Wie gehe ich mit JSON-Marshal-Fehlern in Go um?

DDD
DDDOriginal
2024-11-01 08:34:30436Durchsuche

How to Handle JSON Marshal Errors in Go?

JSON Marshal-Fehlerbehandlung in Go

Bei der Verwendung der json.Marshal-Funktion in Go ist es wichtig, Eingabedaten zu berücksichtigen, die einen Fehler auslösen können. Wie in der offiziellen Dokumentation erwähnt, werden zyklische Datenstrukturen nicht unterstützt und der Versuch, sie zu Marshallen, führt zu einer unendlichen Rekursion, was letztendlich zu einer Laufzeitpanik führt.

Um einen Nicht-Panik-Fehlerzustand zu demonstrieren, erstellen wir ein Programm, das zeigt zwei Arten von Fehlern, die json.Marshal zurückgeben kann: UnsupportedTypeError und UnsupportedValueError.

<code class="go">package main

import (
    "encoding/json"
    "fmt"
    "math"
)

func main() {
    // UnsupportedTypeError: marshalling an invalid type (channel)

    ch := make(chan int)
    _, err := json.Marshal(ch)
    if e, ok := err.(*json.UnsupportedTypeError); ok { // Check for specific error type
        fmt.Println("UnsupportedTypeError:", e.Type)
    } else {
        fmt.Println("Error:", err)
    }

    // UnsupportedValueError: marshalling an invalid value (infinity)

    inf := math.Inf(1)
    _, err = json.Marshal(inf)
    if e, ok := err.(*json.UnsupportedValueError); ok { // Check for specific error type
        fmt.Println("UnsupportedValueError:", e.Value)
    } else {
        fmt.Println("Error:", err)
    }
}</code>

Ausgabe:

UnsupportedTypeError: chan int
UnsupportedValueError: +Inf

Durch die Bereitstellung spezifischer Eingaben zeigt dieses Programm, dass json.Marshal zurückkehren kann Nicht-Null-Fehler, ohne Panik auszulösen. Dadurch können Entwickler diese Fehler in ihren Anwendungen reibungslos behandeln.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit JSON-Marshal-Fehlern in Go um?. 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