【问题标题】:How to report custom Go error types to Sentry?如何向 Sentry 报告自定义 Go 错误类型?
【发布时间】:2021-08-04 22:02:32
【问题描述】:

我希望我的自定义错误显示在 Sentry 中,但它只获取底层的 errorString 类型。 有没有办法改为显示operationTimeoutError

这是我的工作:

type operationTimeoutError error
var errOperationTimeout operationTimeoutError = errors.New("TIMEOUT")

func foo() {
    sentry.CaptureException(errOperationTimeout)
}

【问题讨论】:

    标签: go sentry


    【解决方案1】:

    sentry 将在您提供的错误中调用 Error() 方法,该方法返回打印底层错误的错误消息。您可以覆盖自定义错误类型的 Error 方法,也可以将其映射到带有您打算在哨兵中看到的消息的新错误。由于您可能会将错误用于其他目的,例如日志记录,因此我认为映射是更好的选择。

    func mapError(err error)error{
       switch err.(type){
          case operationTimeoutError:
            return errors.New("operationTimeoutError")
          default:
            return err
       }
    }
    
    sentry.CaptureException(mapError(errOperationTimeout))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-30
      • 2021-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-21
      • 2015-11-14
      • 2016-06-02
      相关资源
      最近更新 更多