Go で json.Marshal を使用するときにパニック以外のエラーを処理するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-10-30 00:30:29
オリジナル
795 人が閲覧しました

How Can I Handle Non-Panic Errors When Using json.Marshal in Go?

Go で json.Marshal から非パニック エラーが発生する

Go の標準 json.Marshal 関数は、Go データ構造を JSON 文字列に変換するように設計されています。ただし、処理できるデータ構造のタイプには特定の制限があることに注意することが重要です。

循環データ構造

そのような制限の 1 つは、json.Marshal が循環データ構造を表現できないことです。 。これを試みると無限再帰が発生し、最終的にはランタイム パニックが発生します。

無効な型と値

この意図しない動作を回避するために、json.Marshal は識別して報告するメカニズムを実装しています。潜在的に問題のある入力。チャネルなどの無効なタイプが指定された場合、json.UnsupportedTypeError のインスタンスが返されます。

例:

<code class="go">_, err := json.Marshal(make(chan int))
_, ok := err.(*json.UnsupportedTypeError) // ok == true</code>
ログイン後にコピー

さらに、json.Marshal は無効なデータを検出して報告できます。正または負の無限大などの値。このような場合、json.UnsupportedValueError のインスタンスが返されます。

例を示します:

<code class="go">_, err := json.Marshal(math.Inf(1))
_, ok := err.(*json.UnsupportedValueError) // ok == true</code>
ログイン後にコピー

結論

入力の型と値を認識することで、 json.Marshal がエラーを返す可能性があるため、実行時のパニックを回避し、コードの堅牢性と信頼性を確保できます。

以上がGo で json.Marshal を使用するときにパニック以外のエラーを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート