golang 関数のエラー処理とログの統合

王林
リリース: 2024-04-25 09:06:02
オリジナル
388 人が閲覧しました

Go でのエラー処理とログの統合には、エラー タイプを使用してエラーを表すことと、エラーの文字列表現を提供することが含まれます。ログ記録にはログ パッケージを使用します。ログ パッケージは、メッセージをログ記録するための標準化されたログ レベルと機能を提供します。 errors.Wrap() 関数を使用してエラーを新しいエラーにラップし、追加のコンテキスト情報を追加します。この統合により、エラー処理が簡素化され、アプリケーションのデバッグ可能性が向上し、アプリケーションの堅牢性と信頼性が保証されます。

golang 関数のエラー処理とログの統合

#Go 関数の統合エラー処理とログ記録

Go アプリケーションでは、アプリケーションが確実に動作するようにエラー処理とログ記録が重要です。プログラムの堅牢性と可観測性は重要です。この記事では、この 2 つを統合してエラー処理を簡素化し、アプリケーションのデバッグ可能性を向上させる方法について説明します。

エラー処理

Go では、組み込みの

error型を使用してエラーを表すことができます。この型はインターフェイスであるため、どの型でもerrorを実装し、エラーを説明する文字列表現を提供できます。

func myFunc() error { // 发生错误的代码 return fmt.Errorf("错误:%s", err) }
ログイン後にコピー

Logging

ログ記録用に、Go は

logパッケージを提供します。このパッケージは、標準化されたログ レベルのセット (InfoErrorなど) とメッセージをログに記録するための関数のセットを提供します。

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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!