Maison >développement back-end >Golang >Comment gérer les erreurs dans json.Marshal de Golang ?

Comment gérer les erreurs dans json.Marshal de Golang ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-03 05:42:30559parcourir

How to Handle Errors in Golang's json.Marshal?

Démonstration de la gestion des erreurs dans json.Marshal de Golang

Dans json.Marshal, des erreurs peuvent survenir en raison de structures de données cycliques ou de types/valeurs d'entrée non valides. Pour comprendre ces scénarios, examinons quelques exemples.

Structures de données cycliques

json.Marshal ne parvient pas à rassembler les structures de données cycliques, conduisant à une récursivité infinie et à une panique d'exécution. Cependant, les structures non cycliques peuvent être marshalées avec succès.

Type d'entrée non valide

json.Marshal peut également rencontrer des erreurs lorsqu'il est présenté avec des types d'entrée non valides. Par exemple, tenter de marshaler un canal entraînera une UnsupportedTypeError en raison de son type incompatible.

<code class="go">_, err := json.Marshal(make(chan int))
if _, ok := err.(*json.UnsupportedTypeError); !ok {
    fmt.Println("Unexpected error type:", err)
}</code>

Valeur d'entrée non valide

Des valeurs d'entrée non valides peuvent également déclencher des erreurs dans json.Marshal. Le regroupement de valeurs telles que math.Inf ou math.NaN renverra une UnsupportedValueError.

<code class="go">_, err := json.Marshal(math.Inf(1))
if _, ok := err.(*json.UnsupportedValueError); !ok {
    fmt.Println("Unexpected error type:", err)
}</code>

En comprenant ces scénarios d'erreur, les développeurs peuvent gérer ou empêcher de manière proactive les erreurs dans json.Marshal, garantissant ainsi l'intégrité et la fiabilité de leurs données. traitement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn