ミドルウェアを使用して Go 関数のエラー処理を改善する: 関数呼び出しをインターセプトして特定のロジックを実行できるミドルウェアの概念を導入します。カスタム関数でエラー処理ロジックをラップするエラー処理ミドルウェアを作成します。ミドルウェアを使用してハンドラー関数をラップし、関数が呼び出される前にエラー処理ロジックが実行されるようにします。エラーの種類に基づいて適切なエラー コードを返します。
を使用して返されたエラーを確認し、必要に応じて適切なアクションを実行します。このアプローチでは、コードの冗長性が生じ、メンテナンスが困難になる可能性があります。この記事では、ミドルウェアを使用して Go 関数のエラー処理を改善する方法について説明します。 ミドルウェアの概念
エラー処理ミドルウェア
func ErrorHandler(handler func(w http.ResponseWriter, r *http.Request)) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { // 执行错误处理逻辑 if err := handler(w, r); err != nil { // 根据错误类型处理错误 switch err { case ErrNotFound: http.Error(w, "Not Found", 404) case ErrInternalServer: http.Error(w, "Internal Server Error", 500) default: http.Error(w, "Unknown Error", 500) } } } }
このうち、
ErrorHandler 関数は、ハンドラー関数をパラメータとして受け取り、新しいハンドラー関数を返します。新しいハンドラー関数は、元のハンドラー関数が呼び出される前にエラー処理ロジックを実行し、エラーの種類に基づいてエラーを処理します。 実践的なケース
import ( "net/http" "github.com/pkg/errors" ) // 假设这是我们的处理程序函数 func MyHandler(w http.ResponseWriter, r *http.Request) error { // ...省略代码... // 模拟一个数据库错误 return errors.Wrap(ErrDatabase, "failed to connect to database") } func main() { // 创建一个HTTP路由 mux := http.NewServeMux() // 为处理程序函数应用错误处理中间件 mux.Handle("/", ErrorHandler(MyHandler)) http.ListenAndServe(":8080", mux) }
上の例では、
ErrorHandler ミドルウェアを使用して MyHandler
ハンドラー関数をラップしました。 HTTP リクエストが /
ルートに到達すると、ミドルウェアがリクエストをインターセプトし、エラー処理ロジックを実行します。 MyHandler
関数でエラーが発生した場合、エラーの種類に応じて、適切なエラー コード (404 や 500 など) が HTTP 応答で返されます。 結論
以上がミドルウェアを使用して golang 関数のエラー処理を改善するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。