1.作用
看官方注釋文檔 ,Recovery 中間件會恢復(recovers) 任何恐慌(panics) 如果存在恐慌,中間件將會寫入500。這個中間件還是很必要的,因為當你程序里有些異常情況你沒考慮到的時候,程序就退出了,服務就停止了,所以是必要的。
recovery注釋
大家都知道go語言panic() 的時候,造成崩潰退出。而gin.Recovery這個中間是處理這個異常然后返回http code 500。但對于鏈接斷開就不會有http code 返回。
2.使用
當你使用gin.Default()其實已經默認給你啟用了這個中間件,但如果你用gin.New(),需要自己加一下,或者你有更好的異常處理方式。
r := gin.New()
r.Use(middleware.Logger(), gin.Recovery())
3.gin其它的recover
gin 還提供額外的Recovery中間件,CustomRecovery和RecoveryWithWriter
Recovery()是另外倆個的封裝,如果額外擴張,自定義ioWriter 或者handle可以用RecoveryWithWriter
CustomRecovery 的DefaultErrorWriter 是將錯誤信息終端輸出,如果要想寫入自己的日志目錄可以用RecoveryWithWriter,
注意:gin的recover中間件只是對主進程的異常進行捕獲,如果要想處理協程里面的panic 單獨的recover,可以參考https://taoshu.in/go/safe-goroutine.html