ホームページ > バックエンド開発 > Golang > Defer で戻り値を使用してエラーを処理するにはどうすればよいでしょうか?

Defer で戻り値を使用してエラーを処理するにはどうすればよいでしょうか?

Susan Sarandon
リリース: 2024-11-07 20:37:03
オリジナル
382 人が閲覧しました

How Can You Handle Errors in Defer with Returning Values?

戻り値による defer でのエラーの処理

データベースに接続し、接続またはエラーを返す関数がある状況では、defer を使用して、エラー処理を処理します。ただし、ロガーの Sync メソッドによって返されたエラーを無視することはベスト プラクティスではありません。

エラーを抑制せずにリンター エラーを回避する 1 つの方法は、以下に示すように匿名関数を使用することです。

logger := zap.NewExample().Sugar()
defer func() {
    _ = logger.Sync()
}()
ログイン後にコピー

このアプローチはリンターの問題には対処しますが、呼び出し関数で返されたエラーを分析する手段は提供しません。

より堅牢な解決策は、関数内の任意の場所で err という名前のエラー変数を初期化することです。

func OpenDbConnection(connectionString string, logSql bool) (db *gorm.DB, err error) {

    logger := zap.NewExample().Sugar()
    defer func() {
        err = logger.Sync()
    }()

    // Some logic here

    return db, err

}
ログイン後にコピー

このメソッドを使用すると、エラーをキャプチャして呼び出し元の関数に返すことができるため、適切なエラー分析が可能になります。

以上がDefer で戻り値を使用してエラーを処理するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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