Bagaimana untuk mengendalikan pengecualian HTTP di Golang?

WBOY
Lepaskan: 2024-06-03 09:43:57
asal
426 orang telah melayarinya

Bagaimana untuk mengendalikan pengecualian HTTP? Di Golang, pengendalian pengecualian HTTP termasuk kaedah berikut: Pengendali ralat HTTP tersuai: Gunakan http.Error untuk menyesuaikan respons ralat. Pengendalian pengecualian terbina dalam: gunakan recover() untuk memulihkan pengecualian dan errorHandler untuk menghantar respons ralat. Kes praktikal: Mengendalikan permintaan tidak sah: menghantar respons ralat mengikut kaedah permintaan. Mengendalikan ralat dalaman pelayan: Gunakan defer recover() untuk menangkap pengecualian dan menghantar respons ralat. Mengendalikan pengecualian lain: mengendalikannya dengan cara yang sama.

如何在 Golang 中处理 HTTP 异常?

Cara mengendalikan pengecualian HTTP di Golang

Apabila menulis program Golang untuk mengendalikan permintaan HTTP, anda mungkin menghadapi situasi yang tidak normal, seperti pelanggan menghantar permintaan yang tidak sah, ralat pelayan dalaman atau masalah sambungan rangkaian. Pengendalian yang betul bagi pengecualian ini adalah penting untuk membina aplikasi yang mantap dan mesra pengguna.

Pengendali Ralat HTTP Tersuai

Untuk keadaan ralat yang diketahui, kami boleh mencipta pengendali ralat HTTP tersuai untuk mengendalikan pengecualian. Fungsi http.Error boleh digunakan untuk menghantar respons ralat tersuai: http.Error 函数可以用来发送自定义错误响应:

import (
    "net/http"
)

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

内置异常处理

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

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

    // 业务逻辑
}
Salin selepas log masuk

Pengendalian pengecualian terbina dalam

Golang menyediakan sokongan untuk pengecualian terbina dalam (seperti panik dan sokongan recover). Fungsi recover() boleh menyambung semula pelaksanaan program selepas pengecualian berlaku dan mengembalikan nilai pengecualian:

import "net/http"

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

    // 处理 GET 请求
}
Salin selepas log masuk
Kes praktikal

Senario: Mengendalikan permintaan yang tidak sah

import "net/http"

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

    // 业务逻辑

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

HandlingScenario ralat pelayan dalaman

🎜rrreee🎜Dengan kaedah ini, kami boleh mengendalikan pengecualian HTTP dengan anggun, mengembalikan respons ralat yang bermakna kepada pelanggan dan menghalang aplikasi daripada ranap akibat ralat yang tidak dijangka. 🎜

Atas ialah kandungan terperinci Bagaimana untuk mengendalikan pengecualian HTTP di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan