我正在尝试在 golang 中重写一个小的 node-api,在那里我发现内部错误并没有停止处理请求。有没有好的方法来结束处理?
我尝试了不同的方法,例如创建错误对象和使用 panic(err) 退出处理,但我认为有更好的方法。
我期望有一个函数可以停止处理请求并抛出 500 错误,并且可能会记录一两件事。
代码示例是这样的:
package main
import (
"fmt"
"net/http"
"strings"
)
func main() {
http.HandleFunc("/ping/", ping)
err := http.ListenAndServe(":8080", nil)
checkErr(err)
}
func ping(w http.ResponseWriter, req *http.Request) {
w.Write([]byte("pong\n"))
urlPath := req.URL.Path
rest := strings.TrimPrefix(urlPath, "/ping/")
testRest(w, rest)
}
func testRest(w http.ResponseWriter, rest string) {
if rest == "abc" {
http.Error(w, "The go-routine should stop here", 500)
}
fmt.Print("This shouldn't be printed")
}
func checkErr(err error) {
if err != nil { …Run Code Online (Sandbox Code Playgroud)