ホームページ  >  記事  >  バックエンド開発  >  Golang 関数のエラー処理と可観測性の追跡

Golang 関数のエラー処理と可観測性の追跡

WBOY
WBOYオリジナル
2024-04-24 10:03:01592ブラウズ

Go 関数でのエラー処理の主な方法には、エラーを表すエラー タイプの使用、パニック (回復不可能なエラーの場合) とリターン (処理可能なエラーの場合) の区別、組み込みツール (error.Error、fmt. Errorf およびエラー パッケージ) によるエラー追跡用。関数呼び出し情報のログ記録と追加により、エラーの可観測性が向上します。

Golang 関数のエラー処理と可観測性の追跡

# Go 言語関数のエラー処理と追跡の可観測性

# Go プログラムを作成する場合、エラー処理とデバッグは不可欠な要素です。この記事では、コードの可観測性を向上させるための Go 関数のエラー処理およびトレース方法について説明します。

エラー処理

error

型の使用Go のエラーは、組み込みの

error

型で表されます。 -in インターフェイス。このインターフェイスを実装する型はエラーを表す可能性があります。 パニックとリターン

    パニック:
  • プログラムで回復不可能なエラーが発生し、プログラムが終了する場合に使用されます。
  • return:
  • エラー値を呼び出し元に返し、呼び出し元がエラーを処理できるようにします。
  • 一般に、エラーを返すには
return

を使用し、回復不可能なエラーが発生した場合にのみ panic を使用することをお勧めします。 エラー追跡

デバッグを簡素化するには、関数呼び出しチェーン内のエラーを追跡することが重要です。 Go は次のメカニズムを提供します。

組み込み

error.Error

関数 エラーの文字列表現は、

error.Error() を通じて取得できます。 ### 関数 。

fmt.Errorf

関数

は、エラー メッセージをフォーマットし、新しい error

タイプ ラッパーを作成するために使用されます。

errors

パッケージ

は、errors.New()

errors などの組み込みエラーの種類と関数のセットを提供します。 .Unwrap( ) を使用してエラー処理を強化します。 実践: エラーの追跡とログ記録

次の例は、組み込みツールを使用してエラーの追跡とログ記録を実行する方法を示しています:

import (
    "fmt"
    "log"
)

func main() {
    // 模拟函数调用链:
    msg, err := readData()
    if err != nil {
        // 创建包装器错误,包含函数调用信息
        err = fmt.Errorf("readData: %w", err)

        // 记录错误
        log.Printf("Error occurred: %v", err)
        return
    }

    // 处理数据
    fmt.Println(msg)
}

func readData() (string, error) {
    // 模拟从文件中读取数据
    return "", fmt.Errorf("read file error")
}

上の例:

fmt.Errorf
    は、元の
  • read file error メッセージをラップし、関数呼び出し情報を追加します。 log.Printf
  • ラップされたメッセージを含む関数呼び出しチェーンのエラーをログに記録します。
  • 結論
エラー処理と可観測性は、安定した保守可能な Go コードを作成するための鍵です。この記事で紹介した方法に従うことで、プログラムのデバッグ機能を向上させ、エラーの追跡と処理を簡素化できます。

以上がGolang 関数のエラー処理と可観測性の追跡の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。