如何向 Sentry 报告自定义 Go 错误类型?

时间:2021-05-14 18:21:20

标签: go sentry

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

这就是我所做的:

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

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

enter image description here

1 个答案:

答案 0 :(得分:0)

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

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

sentry.CaptureException(mapError(errOperationTimeout))