ホームページ  >  記事  >  バックエンド開発  >  Golang で HTTP 例外を処理するにはどうすればよいですか?

Golang で HTTP 例外を処理するにはどうすればよいですか?

WBOY
WBOYオリジナル
2024-06-03 09:43:57413ブラウズ

HTTP例外を処理するには? Golang では、HTTP 例外処理には次のメソッドが含まれます。 カスタム HTTP エラー ハンドラー: http.Error を使用してエラー応答をカスタマイズします。組み込み例外処理: 例外を回復するには、recover() を使用し、エラー応答を送信するには、errorHandler を使用します。実際のケース: 無効なリクエストの処理: リクエスト メソッドに従ってエラー応答を送信します。サーバーの内部エラーの処理: defercover() を使用して例外をキャッチし、エラー応答を送信します。他の例外を処理します。同様の方法で処理します。

如何在 Golang 中处理 HTTP 异常?

Golang で HTTP 例外を処理する方法

HTTP リクエストを処理する Golang プログラムを作成するとき、クライアントが無効なリクエストを送信する、内部サーバー エラー、ネットワーク接続の問題など、異常な状況が発生する可能性があります。これらの例外を適切に処理することは、堅牢でユーザーフレンドリーなアプリケーションを構築するために重要です。

カスタム HTTP エラー ハンドラー

既知のエラー条件については、例外を処理するカスタム HTTP エラー ハンドラーを作成できます。 http.Error 関数は、カスタム エラー応答を送信するために使用できます。 http.Error 函数可以用来发送自定义错误响应:

import (
    "net/http"
)

func errorHandler(w http.ResponseWriter, r *http.Request, status int) {
    http.Error(w, http.StatusText(status), status)
}

内置异常处理

Golang 提供了对内置异常(例如panicrecover)的支持。recover()

func recoverHandler(w http.ResponseWriter, r *http.Request) {
    defer func() {
        if err := recover(); err != nil {
            errorHandler(w, r, http.StatusInternalServerError)
        }
    }()

    // 业务逻辑
}

組み込み例外処理

Golang は、組み込み例外 (panic など) のサポートを提供します。および recover) のサポート。 recover() 関数は、例外の発生後にプログラムの実行を再開し、例外値を返すことができます:

import "net/http"

func invalidRequestHandler(w http.ResponseWriter, r *http.Request) {
    if r.Method != "GET" {
        errorHandler(w, r, http.StatusBadRequest)
        return
    }

    // 处理 GET 请求
}
実際のケース

シナリオ: 無効なリクエストの処理

import "net/http"

func internalErrorHandler(w http.ResponseWriter, r *http.Request) {
    defer func() {
        if err := recover(); err != nil {
            errorHandler(w, r, http.StatusInternalServerError)
        }
    }()

    // 业务逻辑

    // 如果业务逻辑引发异常,程序将恢复执行并发送错误响应
}

シナリオ: 処理内部サーバー エラー

🎜rrreee🎜 これらのメソッドを使用すると、HTTP 例外を適切に処理し、意味のあるエラー応答をクライアントに返し、予期しないエラーによるアプリケーションのクラッシュを防ぐことができます。 🎜

以上がGolang で HTTP 例外を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。