2 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超6個(gè)贊
這沒(méi)有什么竅門(mén)。當(dāng)您希望處理函數(shù)停止執(zhí)行操作時(shí),只需從函數(shù)返回即可:
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")
}
這里的所有都是它的。當(dāng)你說(shuō)“內(nèi)部錯(cuò)誤不會(huì)停止請(qǐng)求的處理”時(shí),你似乎認(rèn)為發(fā)生了更多的魔法,但在 Go 中卻很少有魔法。http.Error將錯(cuò)誤響應(yīng)寫(xiě)回客戶(hù)端。就這樣。它沒(méi)有辦法“阻止”任何事情;它只是將狀態(tài)代碼和正文寫(xiě)入客戶(hù)端連接,然后返回。返回后,您有機(jī)會(huì)在調(diào)用代碼中執(zhí)行更多操作,但如果您只想返回函數(shù),則只需返回即可。從處理程序返回是“停止處理請(qǐng)求” - 您的代碼正在處理請(qǐng)求,您擁有完全的控制權(quán)。

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超8個(gè)贊
重要的是要記住,這只是針對(duì)客戶(hù)請(qǐng)求的解決方案。如果您想取消來(lái)自服務(wù)器的請(qǐng)求,可能需要采用不同的方法。
- 2 回答
- 0 關(guān)注
- 200 瀏覽
添加回答
舉報(bào)