ホームページ  >  記事  >  バックエンド開発  >  Golang 関数のエラー処理のパターンとアンチパターン

Golang 関数のエラー処理のパターンとアンチパターン

王林
王林オリジナル
2024-04-24 13:30:01812ブラウズ

Go 関数のエラー処理モードには、errors.New() を使用してエラーを作成すること、基礎となるエラーをラップすること、エラーがないことを示す nil を返すことなどが含まれます。アンチパターンには、マジック ナンバーまたは文字列を使用してエラーを表すこと、暗黙的にエラーを処理すること、エラーを無視すること、遅延終了パターンが含まれます。ベスト プラクティス: エラーを作成して返すには、errors.New() を使用します。アンチパターンの例: os.Open() によって返されるエラーを無視します。ベスト プラクティスに従い、アンチパターンを回避すると、明確で保守しやすく、デバッグしやすいコードが得られます。

Golang 関数のエラー処理のパターンとアンチパターン

Go 関数のエラー処理のパターンとアンチパターン

Go でエラーを処理する場合、さまざまな方法があります。 。ただし、すべてのモデルが理想的であるわけではありません。この記事では、Go での関数エラー処理のベスト プラクティスとアンチパターンを検討し、それらを示す実際の例を示します。

ベスト プラクティス:

  • ##Use errors.New() エラーの作成: これは作成です。新しいエラーの共通メソッド。簡潔な説明を含む error 値を返します。
  • エラーを基になるエラーでラップする: 関数がエラーを受け取った場合、そのエラーを新しいエラーでラップして、エラーの原因に関する詳細なコンテキストを提供できます。
  • エラーがないことを示すには nil を返します: 関数でエラーが発生しなかった場合、関数は nil を返す必要があります。
  • グローバル エラー変数は使用しないでください: グローバル エラー変数を使用すると、競合状態が発生し、コードのデバッグが困難になる可能性があります。
  • エラーの処理: すべてのエラーは無視されるのではなく、関数内で処理される必要があります。理想的には、関数が失敗したことを示すエラーが返されるべきです。

アンチパターン:

  • マジック ナンバーまたは固定文字列を使用してエラーを表現します: コードが難しくなる可能性がありますメンテナンスと拡張機能。
  • エラーの暗黙的な処理: エラーが発生するため、エラーをチェックして直接返すために if err != nil { ... } を使用しないでください。難しいトラックを扱う。
  • エラーを無視する: エラーが発生する可能性は低いと思われる場合でも、常にエラーを処理してください。
  • 遅延終了モードを使用する: 関数の最後に if err != nil { return err } パターンを使用すると、コードの読み取りと保守が困難になります。 。

実際のケース:

ベスト プラクティス: 次の関数は、errors.New() を使用して新しいエラー。呼び出し元にファイルのオープンに失敗したことを示すためにそれを返します:

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

アンチパターン: 次の関数は、os によって返されたエラーを処理しません。 .Open() : プログラムがクラッシュする可能性があります:

func OpenFile(path string) *os.File {
    f, _ := os.Open(path)
    return f
}

この記事で説明されているベスト プラクティスに従い、アンチパターンを回避することで、明確で保守しやすく、簡単なコードを作成できます。デバッグするために。

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

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