ホームページ >バックエンド開発 >Golang >golang 関数でのエラー処理のベスト プラクティス

golang 関数でのエラー処理のベスト プラクティス

王林
王林オリジナル
2024-04-28 18:51:01781ブラウズ

GoLang 関数のエラー処理のベスト プラクティスには、error 変数を使用してエラーを受信すること、nil 値をチェックしてエラーがあるかどうかを確認すること、遅延回復メカニズムを使用してパニックを処理することなどが含まれます。 ; 実際のケースでは、これらのベスト プラクティスを示しています。 CSV 変換 JSON 関数の適用を練習します。

golang 関数でのエラー処理のベスト プラクティス

GoLang 関数のエラー処理のベスト プラクティス

GoLang でエラーを処理する場合、コードを堅牢にして保守しやすくするためのベスト プラクティスがいくつかあります。最も一般的なテクニックのいくつかを見てみましょう:

error 変数の使用

GoLang の error 型は、関数の操作中に発生する可能性のあるエラーを表します。 。これらのエラーは、error 変数を使用して受信し、慎重に処理する必要があります。次の例はこれを示しています。

func divide(a, b int) (float64, error) {
    if b == 0 {
        return 0, errors.New("divisor cannot be zero")
    }
    return float64(a) / float64(b), nil
}

Check nil

error 値は nil で、エラーがないことを示します。したがって、error 変数を使用する場合は、nil をチェックしてエラーが存在するかどうかを判断することが重要です。例:

if err != nil {
    // 处理错误(打印、记录等)
}

errors パッケージの使用

GoLang の errors パッケージには、エラーの作成と処理に役立つ関数が用意されています。カスタム エラー メッセージを作成する場合に特に便利です。

import "errors"

// 创建自定义错误类型
var MyError = errors.New("my custom error")

defer リカバリ メカニズムの

defer ステートメントを使用すると、エラーが発生するまで操作の実行を遅らせることができます。関数が戻ります。これは、パニックから回復してエラーを処理するために、recover() 組み込み関数と組み合わせてよく使用されます。

func recoverExample() {
    defer func() {
        if err := recover(); err != nil {
            // 处理从恐慌中恢复的错误
        }
    }()
    // 代码可能导致恐慌
}

実用的なケース

上記のベスト プラクティスを使用する JSON オブジェクトの関数を変換する CSV ファイル:

import (
    "encoding/csv"
    "errors"
    "io"
    "strconv"
)

// 将 CSV 文件转换成 JSON 对象
func CSVtoJSON(csvReader io.Reader) (map[string]interface{}, error) {
    csvData, err := csv.NewReader(csvReader).ReadAll()
    if err != nil {
        return nil, err
    }
    data := make(map[string]interface{})
    for _, row := range csvData {
        name := row[0]
        value := row[1]
        if _, ok := data[name]; ok {
            return nil, errors.New("duplicate key: " + name)
        }
        // 将 string 转换为 float64
        floatValue, err := strconv.ParseFloat(value, 64)
        if err != nil {
            return nil, err
        }
        data[name] = floatValue
    }
    return data, nil
}

これらのベスト プラクティスに従うことで、GoLang 関数でエラーが確実かつ効率的に処理されるようにすることができます。

以上がgolang 関数でのエラー処理のベスト プラクティスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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