defer ステートメントのエラー処理戦略
指定されたシナリオでは、特に次のような場合に、defer ステートメント内の潜在的なエラーを処理するという課題に直面します。ロガーの Sync() メソッドを扱います。 Sync() によって返されたエラーを無視することはお勧めできません。微妙なエラーやデバッグの困難につながる可能性があります。
カスタム エラー変数
このような場合に推奨される戦略関数内でカスタム エラー変数を宣言し、どこでも初期化できます。これにより、エラーを呼び出し元の関数に伝播して適切に処理できます。
例:
func OpenDbConnection(connectionString string, logSql bool) (db *gorm.DB, err error) { logger := zap.NewExample().Sugar() defer func() { err = logger.Sync() }() // Business logic here return db, err }
このアプローチにより、データベース接続 (成功した場合) とデータベース接続 (成功した場合) との両方を返すことができます。
代替方法:
有効なデータベース接続を返すことが必須ではない場合は、コードを変更することもできます。 Sync() エラーを無視しないようにするため。これには、Sync() 呼び出しを匿名関数でラップし、以前に宣言したカスタム エラー変数にエラーを割り当てることが含まれます。
func OpenDbConnection(connectionString string, logSql bool) (*gorm.DB, error) { logger := zap.NewExample().Sugar() defer func() { _ = logger.Sync() }() // Business logic here return db, err }
これらの戦略に従うことで、defer ステートメントの潜在的なエラーを効果的に処理し、適切なエラーを保証できます。アプリケーションでのエラー処理。
以上がDefer ステートメントのエラーを処理する方法: Go での効果的なエラー処理のガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。