【问题标题】:How to avoid affecting other code when panic error or something else in golanggolang中出现panic错误或其他问题时如何避免影响其他代码
【发布时间】:2018-01-30 18:06:31
【问题描述】:

我正在编写一个将合并到公司系统中的监控程序。程序运行时,很少会出现一些错误,因为一些其他的服务器没有获取http规则,网络错误或其他各种问题。我修复了大部分但我仍然害怕影响在主程序上可能存在潜在错误。

从公司方面来说,主程序的稳定性最重要,其次是监控的结果,监控的稳定性是次要的。

有没有方法可以隔离错误?例如python中的“try...except Exception...”忽略错误(诚然,不推荐)如何避免在golang中出现panic错误或其他内容时影响其他代码

【问题讨论】:

    标签: exception go runtime-error panic


    【解决方案1】:

    有了恐慌,你可以像这样使用recover

    func recoverExample() {
        defer func() {
            if panicMessage := recover(); panicMessage != nil {
                fmt.Printf("Panic '%v' captured", panicMessage)
            }
        }()
        panic("Oh no!")
    }
    

    有输出:

    Panic 'Oh no!' captured
    

    【讨论】:

      【解决方案2】:

      用户恢复功能位于您有可能出错的功能顶部。不要使用panic,因为它会停止你的代码的执行。使用下面的代码 sn-p。它还会打印日志,让您知道异常发生在哪个函数中。

      defer func() {
          if r := recover(); r != nil {
              log.Println("Recovered in custom function", r)
          }
      }()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多