2 回答
TA贡献1829条经验 获得超6个赞
这没有什么窍门。当您希望处理函数停止执行操作时,只需从函数返回即可:
func testRest(w http.ResponseWriter, rest string) {
if rest == "abc" {
http.Error(w, "The go-routine should stop here", 500)
return
}
fmt.Print("This shouldn't be printed")
}
如果你想记录一些东西,记录一些东西:
func testRest(w http.ResponseWriter, rest string) {
if rest == "abc" {
http.Error(w, "The go-routine should stop here", 500)
log.Println("something bad happened")
return
}
fmt.Print("This shouldn't be printed")
}
这里的所有都是它的。当你说“内部错误不会停止请求的处理”时,你似乎认为发生了更多的魔法,但在 Go 中却很少有魔法。http.Error将错误响应写回客户端。就这样。它没有办法“阻止”任何事情;它只是将状态代码和正文写入客户端连接,然后返回。返回后,您有机会在调用代码中执行更多操作,但如果您只想返回函数,则只需返回即可。从处理程序返回是“停止处理请求” - 您的代码正在处理请求,您拥有完全的控制权。
- 2 回答
- 0 关注
- 147 浏览
添加回答
举报