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

DDD
Freigeben: 2024-11-01 08:34:30
Original
447 Leute haben es durchsucht

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>
Nach dem Login kopieren

Ausgabe:

UnsupportedTypeError: chan int
UnsupportedValueError: +Inf
Nach dem Login kopieren

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!

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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!