ホームページ >バックエンド開発 >Golang >Golang 関数のエラー処理実践ガイド

Golang 関数のエラー処理実践ガイド

WBOY
WBOYオリジナル
2024-05-04 11:54:021042ブラウズ

エラー処理実践ガイド: 組み込みエラー タイプ: 組み込みタイプを使用してカスタム エラーを作成します。エラー インターフェイス: %w 構文を使用してエラーをラップし、コンテキストを提供します。エラーの確認: == nil を使用して、エラーが存在するかどうかを確認します。エラー ガード: エラー処理を簡素化します。カスタム タイプ: エラーを示し、詳細情報を提供するカスタム タイプを作成します。リカバリ: パニック発生時に関数を復元するには、recover() を使用します。

Golang 関数のエラー処理実践ガイド

Go 関数エラーを処理するための実践ガイド

はじめに

正しく理解するGo ではエラーの処理が重要であり、アプリケーションの安定性と保守性を大幅に向上させることができます。この記事では、さまざまなエラー処理手法を紹介し、その使用法を示す実践的な例を示します。

1. 組み込みエラー タイプ

Go には、errors.New() や ## など、いくつかの組み込みエラー タイプが用意されています。 #fmt.エラー("")。これらのタイプを使用してカスタム エラーを作成できます。

2. error インターフェイス

error このインターフェイスを使用すると、さまざまなエラー タイプを相互に互換させることができます。 %w 構文を使用して、エラーをラップしてコンテキストを提供できます。

実践的なケース 1:

import "errors"

func OpenFile(fname string) error {
    f, err := os.Open(fname)
    if err != nil {
        return errors.New("failed to open file: " + err.Error())
    }
    return nil
}

3. エラーの確認

== nil# を使用できます。 # # エラーをチェックします。 nil の場合は、エラーがないことを意味します。

実践的なケース 2:

func OpenFile(fname string) *os.File {
    f, err := os.Open(fname)
    if err != nil {
        return nil
    }
    return f
}

4. エラー ガード

エラー ガード構文 (

if err := f(); err != nil { ... }

) は、簡略化されたエラー処理方法を提供します。

実践的なケース 3:

func OpenFile(fname string) (*os.File, error) {
    if f, err := os.Open(fname); err != nil {
        return nil, err
    } else {
        return f, nil
    }
}

5. カスタム タイプ

エラーを表すカスタム タイプを作成できます。追加情報を提供します。

実践的なケース 4:

type FileError struct {
    fname string
    err   error
}

func (e FileError) Error() string {
    return fmt.Sprintf("failed to open file %s: %s", e.fname, e.err)
}

func OpenFile(fname string) (*os.File, error) {
    f, err := os.Open(fname)
    if err != nil {
        return nil, &FileError{fname, err}
    }
    return f, nil
}

6. リカバリ

使用

recover()

パニック時の再開機能で実行されます。

実際的なケース 5:

func OpenFile(fname string) *os.File {
    defer func() {
        if r := recover(); r != nil {
            fmt.Printf("recover: %s\n", r)
        }
    }()
    f, err := os.Open(fname)
    if err != nil {
        panic(err)
    }
    return f
}

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

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