【发布时间】:2021-12-01 04:03:43
【问题描述】:
在很多情况下,我知道会发生错误并希望将其他数据传递给 Sentry。我仍然希望引发异常(因此我的其余代码停止)并且我只希望哨兵出现一个错误。
例如,假设我正在进行 HTTP 调用,如果 HTTP 调用失败,我想要一个错误,包括发送到 Sentry 的响应文本:
import requests
resp = requests.post(url, json=payload)
if resp.ok:
return resp.json()
try:
text = resp.json()
except json.JSONDecodeError:
text = resp.text
# TODO: add `text` to Sentry error
resp.raise_for_status()
如何使用 Sentry Python SDK 执行此操作?
被拒绝的解决方案:
- Sentry 的日志记录:这会导致 sentry 出现两个错误(一个用于日志语句,一个用于引发的异常)
-
capture_expection:这会导致哨兵出现两个错误(一个是捕获的异常,一个是引发的异常) - 向异常消息添加额外的详细信息:这会破坏 Sentry 的错误分组,因为每个错误都有一个唯一的名称
【问题讨论】: