首先:我是 Go 的新手,我有多年的 Java 开发经验。
我使用 Gin Gonic 开发了一些 REST API。 我的端点之一偶尔(因此我无法按需重现)在 HTTP Get 到我不管理的外部 API 期间崩溃。显示的错误类似于:
stream error: stream ID 4; INTERNAL_ERROR
代码崩溃的摘录:
client := &http.Client{}
req, err := http.NewRequest("GET", apiUrl, nil)
if err != nil{
log.Fatal(err)
return result, err
}
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
return result, err
}
defer resp.Body.Close()
这会使我的服务器崩溃并停止。
我不明白发生了什么,我正在处理代码中的所有错误,因此与 java 相比,它看起来像是一个未捕获的异常,但我不知道如何捕获该错误并保持我的服务器运行(我不关心避免错误本身,我只希望我的服务器继续运行)。
最佳答案
在 gin-gonic
中,您可以使用 gin.Recover()
中间件来帮助您的应用程序从崩溃中恢复。
您可以通过 gin.New()
或通过 gin.Default()
使用实例化(它已经包含在内)
handlers := gin.New()
handlers.Use(gin.Recovery())
关于rest - 如何避免 Golang 服务器 (Gin Gonic) 在 INTERNAL_ERROR 上崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61674891/