rest - 如何避免 Golang 服务器 (Gin Gonic) 在 INTERNAL_ERROR 上崩溃

标签 rest go error-handling crash go-gin

首先:我是 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/

相关文章:

javascript - 在 Angular-JS 中,如何根据所选行中包含的数据显示按钮?

java - 如何处理 Jersey REST 中的空/空请求负载

methods - T 和 *T 的方法集

file-io - 戈朗 : Why does the compress/gzip Read function not read file contents?

java - 我创建的每个main()函数上的ArrayIndexOutOfBoundsException

rest - 在 ASP.net MVC 4 Web Api 路由中正确处理嵌套资源

java - 使用 Springs MVC 返回 JSON 数据哪种方式更好以及为什么

go - 从函数返回未导出的类型

twitter-bootstrap - 在 Bootstrap 模式中捕获 Firebase 错误

c# - 我可以使用C#在ASP.NET中创建错误日志吗?