Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk mengendalikan pengecualian HTTP di Golang?

Bagaimana untuk mengendalikan pengecualian HTTP di Golang?

WBOY
WBOYasal
2024-06-03 09:43:57427semak imbas

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)
}

内置异常处理

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

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

    // 业务逻辑
}

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 请求
}
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)
        }
    }()

    // 业务逻辑

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

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!

Kenyataan:
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