カスタム エラー処理フレームワークを構築することで、Go 関数のエラー処理機能を強化できます。カスタム エラー タイプを定義し、追加のエラー情報を伝えます。エラー ハンドラーを作成し、カスタム エラー タイプに基づいて対応する応答を返します。エラー ハンドラーを関数に統合して、さまざまな種類のエラーを柔軟に処理します。
#カスタム エラー処理フレームワークを構築して、Golang 関数のエラー処理機能を強化します
はじめに
Go 言語では、エラー処理は堅牢で保守可能なアプリケーションを作成するために重要です。組み込みのerror 型は、エラーを表現および伝達する便利な方法を提供します。ただし、場合によっては、より柔軟でカスタマイズ可能なエラー処理メカニズムが必要になります。この記事では、Go 関数のエラー処理機能を強化するカスタム エラー処理フレームワークを構築する方法を紹介します。
エラー タイプ
最初に、エラーに関する追加情報を伝えるカスタム エラー タイプを定義します。たとえば、次のコードは、データベース エラーを表すDatabaseError 型を定義します。
type DatabaseError struct { Message string Query string Code int } func (e DatabaseError) Error() string { return fmt.Sprintf("DatabaseError: %s (query: %s, code: %d)", e.Message, e.Query, e.Code) }
Error() このメソッドは、データベース エラーに関する情報を含む書式設定されたエラー メッセージを返します。エラーの詳細。
エラー ハンドラー
次に、カスタム エラーを処理し、適切な応答を返すエラー ハンドラー関数を作成します。たとえば、次のコードは、DatabaseError を HTTP ステータス コードに変換するハンドラーを定義します。
func HandleDatabaseError(w http.ResponseWriter, r *httpRequest, err error) { if dbErr, ok := err.(DatabaseError); ok { switch dbErr.Code { case 404: http.NotFound(w, r) case 500: http.InternalServerError(w, r) default: http.BadRequest(w, r) } } else { http.Error(w, "Internal Server Error", 500) } }
統合エラー ハンドラー
これで、エラーが発生します。ハンドラーは関数に統合できます。たとえば、次の関数はデータベース クエリを処理する関数です。DatabaseError が発生した場合は、
HandleDatabaseError 関数を使用します。
func QueryDatabase(query string) (result []string, err error) { // 执行数据库查询 if err != nil { if dbErr, ok := err.(DatabaseError); ok { return nil, HandleDatabaseError(err) } return nil, err } // 处理成功的结果 return result, nil }
実際のケース
カスタム エラー処理フレームワークを使用してデータベース エラーを処理する次のサンプル コードを検討します。package main import ( "log" "net/http" // 自定義的錯誤處理器及其他代碼 ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { result, err := QueryDatabase("SELECT * FROM users") if err != nil { // 根據錯誤,產生不同的 HTTP 狀態碼 HandleDatabaseError(w, r, err) } else { // 處理成功的結果 fmt.Fprintf(w, "Users: %+v", result) } }) log.Fatal(http.ListenAndServe(":8080", nil)) }
結論
カスタム エラー処理を使用するフレームワークを使用すると、Go 関数のエラー処理機能を強化できます。これにより、カスタム エラー タイプを定義し、エラー ハンドラーを作成し、特定のエラー カテゴリに基づいてエラーを柔軟に処理することができます。これにより、エラー処理ロジック、可読性、保守性が向上します。以上がカスタム エラー処理フレームワークを構築して、Golang 関数のエラー処理機能を強化します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。