Go でのエラー処理とログの統合には、エラー タイプを使用してエラーを表すことと、エラーの文字列表現を提供することが含まれます。ログ記録にはログ パッケージを使用します。ログ パッケージは、メッセージをログ記録するための標準化されたログ レベルと機能を提供します。 errors.Wrap() 関数を使用してエラーを新しいエラーにラップし、追加のコンテキスト情報を追加します。この統合により、エラー処理が簡素化され、アプリケーションのデバッグ可能性が向上し、アプリケーションの堅牢性と信頼性が保証されます。
#Go 関数の統合エラー処理とログ記録
Go アプリケーションでは、アプリケーションが確実に動作するようにエラー処理とログ記録が重要です。プログラムの堅牢性と可観測性は重要です。この記事では、この 2 つを統合してエラー処理を簡素化し、アプリケーションのデバッグ可能性を向上させる方法について説明します。 エラー処理Go では、組み込みのerror 型を使用してエラーを表すことができます。この型はインターフェイスであるため、どの型でも
error を実装し、エラーを説明する文字列表現を提供できます。
func myFunc() error { // 发生错误的代码 return fmt.Errorf("错误:%s", err) }
log パッケージを提供します。このパッケージは、標準化されたログ レベルのセット (
Info や
Error など) とメッセージをログに記録するための関数のセットを提供します。
import log func main() { log.Println("这是一个信息消息") log.Printf("这是一个带格式的消息:%d", 42) }
errors.Wrap() 関数を使用できます。この関数は、エラーを新しいエラーでラップし、追加のコンテキスト情報を追加します。
func myFunc() error { if err := anotherFunc(); err != nil { return errors.Wrap(err, "myFunc 出错") } // 其余代码 }
myFunc() は anotherFunc() によって発生したエラーをログに記録し、「myFunc エラー」コンテキスト情報を追加します。
実践的なケースデータベース ライブラリを使用してユーザー テーブルをクエリする単純な Web アプリケーションを考えてみましょう。上記の手法を使用してエラーを処理し、ログに記録できます。import ( "database/sql" "log" ) func getUser(id int) (*User, error) { row := db.QueryRow("SELECT * FROM users WHERE id = ?", id) var u User if err := row.Scan(&u.ID, &u.Name); err != nil { return nil, errors.Wrap(err, "获取用户出错") } log.Printf("获取用户:%s", u.Name) return &u, nil }
getUser() 関数では、エラーが発生すると、「」を追加しながらエラーを新しいエラーでラップします。 「ユーザー エラーの取得」コンテキスト情報。また、正常に取得されたユーザーも記録されます。
エラー処理とログ記録を統合することで、アプリケーションをより簡単にデバッグし、問題を迅速に特定して解決できるようになります。これは、アプリケーションの堅牢性と信頼性を確保するために重要です。以上がgolang 関数のエラー処理とログの統合の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。