Golang では、エラー ラッパーを使用して、元のエラーにコンテキスト情報を追加することで新しいエラーを作成できます。これを使用すると、さまざまなライブラリまたはコンポーネントによってスローされるエラーの種類を統一し、デバッグとエラー処理を簡素化できます。手順は次のとおりです。errors.Wrap 関数を使用して、元のエラーを新しいエラーにラップします。新しいエラーには、元のエラーのコンテキスト情報が含まれています。 fmt.Printf を使用してラップされたエラーを出力し、より多くのコンテキストとアクション性を提供します。異なる種類のエラーを処理する場合は、errors.Wrap 関数を使用してエラーの種類を統一します。
Golang でのエラー ラッパーの使用法
エラー ラッパーは、元のエラーに追加のコンテキストや情報を追加することで新しいエラーを作成できる Golang の機能です。これは、エラーのデバッグや処理を行う場合、特に複数のライブラリまたはコンポーネントを使用する場合に便利で、それぞれが独自のエラー タイプをスローする可能性があります。
エラー ラッパーを使用するには、errors.Wrap
関数を使用できます: errors.Wrap
函数:
import "errors" // 新建一个原始错误。 originalError := errors.New("原始错误") // 使用 Wrap 函数创建一个带附加上下文的新错误。 newError := errors.Wrap(originalError, "附加上下文")
新错误 newError
具有以下格式:
附加上下文: 原始错误
这可以帮助你在日志或错误消息中提供更多信息,让错误更具可操作性:
fmt.Printf("错误:%v", newError) // 输出:附加上下文: 原始错误
实战案例
假设你正在一个使用多个第三方库的应用程序中工作。其中一个库抛出一个 MyError
类型的错误,而另一个库抛出一个 YourError
类型的错误。要处理这些错误,可以使用 Wrap
// 处理 MyError 错误。 func handleMyError(err error) { newError := errors.Wrap(err, "my error handling code") // ... } // 处理 YourError 错误。 func handleYourError(err error) { newError := errors.Wrap(err, "your error handling code") // ... } // 在主函数中处理错误。 func main() { var err error // 模拟从 MyError 库抛出一个错误。 if rand.Intn(2) == 0 { err = MyError("我的错误") } else { // 模拟从 YourError 库抛出一个错误。 err = YourError("你的错误") } // 使用 Wrap 函数统一错误类型。 newError := errors.Wrap(err, "主处理代码") // ... 处理新错误 ... }
newError
の形式は次のとおりです: rrreee
これは次のような場合に役立ちます。ログまたはエラー エラーをより対処しやすくするために、メッセージに詳細情報を入力してください: 🎜rrreee🎜🎜 実践的な例 🎜🎜🎜 複数のサードパーティ ライブラリを使用するアプリケーションで作業しているとします。ライブラリの 1 つはMyError
タイプのエラーをスローし、もう 1 つのライブラリは YourError
タイプのエラーをスローします。これらのエラーを処理するには、Wrap
関数を使用してエラー タイプを統合できます: 🎜rrreee🎜この方法で、さまざまなエラー タイプを統合し、各エラーに追加のコンテキストを追加できるため、デバッグとエラー処理が簡素化されます。 🎜以上がGolang のエラー ラッパーを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。