golang 関数がエラーを適切に処理する方法

WBOY
リリース: 2024-04-25 13:24:01
オリジナル
930 人が閲覧しました

Go で関数のエラーを適切に処理するには、次のトリックが必要です: if err != nil を使用してエラーをチェックします。エラー処理ロジックを分離し、defer ステートメントを使用します。センチネル エラーを使用して、既知のエラー タイプを表します。複数のタイプのエラーを処理するには、複数のエラー タイプを使用します。実際のケース: ファイルの読み取りおよび書き込み操作では、エラーをチェックして適切に処理することでコードの堅牢性を向上できます。

golang 関数がエラーを適切に処理する方法

Go 関数のエラーを適切に処理する

Go では、エラーは error 型変数として表されます。堅牢で保守しやすいコードを作成するには、適切なエラー処理が不可欠です。次のヒントは、関数のエラーを適切に処理するのに役立ちます:

1. if err != nil

を使用する最も一般的なチェック方法です。エラーの場合 この方法では、以下に示すように if err != nil を使用します。

func f() error {
    if err := g(); err != nil {
        return fmt.Errorf("g: %w", err) // 使用 %w 封装原始错误
    }

    // 其余代码...
    return nil
}
ログイン後にコピー

2 個別のエラー処理ロジック

関数をシンプルに保つために、エラー処理ロジックをビジネス ロジックから分離できます。 defer ステートメントは、次のように関数が戻る前にエラーを処理するために使用されます:

func f() (err error) {
    defer func() {
        if r := recover(); r != nil {
            // 捕获恐慌并将其转换为错误
            err = fmt.Errorf("panic: %v", r)
        }
    }()

    g()

    return
}
ログイン後にコピー

3. センチネル エラーの使用

センチネル エラーは次のとおりです。特殊なエラー。特定の種類のエラー状態を表すために使用されます。これにより、以下に示すように、エラー チェックが簡単になります:

func f() error {
    if err := g(); err == sentinelError {
        return nil // 忽略已知的错误
    }

    return err
}
ログイン後にコピー

4. 複数のエラー タイプの使用

関数が複数のタイプのエラーを生成する可能性がある場合、複数のエラーを使用できます。タイプ。 errors.NewMultiError() この関数を使用すると、以下に示すように、複数のエラーを含むエラーを作成できます。

func f() error {
    var errs []error

    if err := g(); err != nil {
        errs = append(errs, err)
    }

    if err := h(); err != nil {
        errs = append(errs, err)
    }

    if len(errs) > 0 {
        return errors.NewMultiError(errs...)
    }

    return nil
}
ログイン後にコピー

実践例: ファイルの読み取りと書き込み

次のコード例は、ファイルの読み取りおよび書き込み時にエラーを適切に処理する方法を示しています。

package main

import (
    "fmt"
    "io/ioutil"
)

func main() {
    data, err := ioutil.ReadFile("data.txt")
    if err != nil {
        fmt.Printf("ReadFile: %v", err)
        return
    }

    err = ioutil.WriteFile("data-copy.txt", data, 0644)
    if err != nil {
        fmt.Printf("WriteFile: %v", err)
        return
    }
}
ログイン後にコピー

上記のヒントを使用すると、Go 関数でエラーを適切に処理でき、コードの堅牢性と可読性が向上します。保守性。

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

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