ホームページ > バックエンド開発 > Golang > Go でエラーを処理するためのベスト プラクティスは何ですか?

Go でエラーを処理するためのベスト プラクティスは何ですか?

Linda Hamilton
リリース: 2024-12-31 05:28:13
オリジナル
1020 人が閲覧しました

What are the Best Practices for Handling Errors in Go?

Go の標準エラー ハンドラー

Go には、エラー処理のための慣用的なアプローチがいくつかあります。

1.エラー変数

var (
    ErrSomethingBad = errors.New("some string")
    ErrKindFoo      = errors.New("foo happened")
)
ログイン後にコピー

2を修正しました。エラーの種類

type SomeError struct {
    ExtraInfo int
}
func (e SomeError) Error() string { /* … */ }
ログイン後にコピー

3.アドホック エラー

func SomepackageFunction() error {
    return errors.New("not implemented")
}
ログイン後にコピー

4.標準ライブラリのエラー

func SomeFunc() error {
    return io.EOF
}
ログイン後にコピー

5.エラーインターフェイス

type Error interface {
    error
    Timeout() bool
    Temporary() bool
}
ログイン後にコピー

6.ラッピング エラー (Go 1.13 )

func SomepackageFunction() error {
    err := somethingThatCanFail()
    if err != nil {
        return fmt.Errorf("some context: %w", err)
    }
}
ログイン後にコピー

正しいアプローチの選択

推奨される方法は次のとおりです:

  • 修正されたエラーユーザーがテストしたい可能性があるエラーの変数またはエラー タイプ具体的には。
  • テストされる可能性が低い軽微なエラーのアドホック エラーまたは標準ライブラリ エラー。
  • 特定の動作またはプロパティを持つエラーのエラー インターフェイス。
  • ラップされたエラー既存のエラーにコンテキストを追加する (Go 1.13 ).

利点:

  • 固定誤差変数: テストと比較が簡単。
  • エラー タイプ: 追加情報により拡張可能エラー処理用。
  • アドホック エラー: 軽微なエラーについては簡潔。
  • エラー インターフェイス: 特定のエラー動作を強制し、ポリモーフィズムを促進します。
  • ラップされたエラー: カスタム エラーを作成せずにコンテキストを提供します

参考資料:

  • [効果的な Go on Errors](https://go.dev/doc/articles/errors)
  • [The Go ブログ: エラー処理とGo](https://blog.golang.org/error-handling-and-go)
  • [デイブ チェイニー: エラーの検査](https://dave.cheney.net/2016/04/07 /inspecting-errors)
  • [ピーター・ブルゴン: プログラミングエラー](https://go.dev/blog/errors)

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

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