Go の Defer ステートメントから返されたエラーを効果的に処理するにはどうすればよいでしょうか?

DDD
リリース: 2024-11-10 03:11:02
オリジナル
224 人が閲覧しました

How Can You Effectively Handle Errors Returned from Defer Statements in Go?

遅延エラー変数を使用した Defer でのエラー処理

Go では、周囲の関数の後に関数が実行されるようにするために defer ステートメントが使用されます。が戻ってきました。これは、クリーンアップ タスクやリソース管理に役立ちます。ただし、defer ステートメントがエラーを返した場合はどうなりますか?

遅延エラーの処理

データベース接続を開こうとし、接続またはエラー。この関数は、終了する前に同期する必要があるロガーを使用します。ロガーの Sync() メソッドは、現在無視されているエラーを返します。

ベスト プラクティス

遅延エラーを処理するための推奨されるアプローチは、返されるエラーに名前を付けて初期化することです。変数は関数内の任意の場所にあります。エラー変数に名前を付けると、テストやデバッグ中にエラーを追跡しやすくなります。

たとえば、元のコードは次のように変更できます。

func OpenDbConnection(connectionString string, logSql bool) (*gorm.DB, error) {
    logger := zap.NewExample().Sugar()
    defer func() {
        if err := logger.Sync(); err != nil {
            return
        }
    }()

    // some logic here

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

利点

このアプローチにはいくつかの利点があります。

  • エラーが呼び出し元に正しく返されます。
  • テストおよびデバッグ中にエラーが追跡されます。
  • コードは読みやすく、理解しやすくなっています。

結論

遅延エラーを処理する場合、返されるエラー変数に名前を付けて内部で初期化することがベスト プラクティスです。関数。これにより、適切なエラー処理が可能になり、デバッグが簡素化されます。

以上がGo の Defer ステートメントから返されたエラーを効果的に処理するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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