异常
状态: 稳定,除非另有说明。
本文档定义了如何记录异常及其属性。
记录异常
如果异常在 span 结束时仍未处理并且导致 span 状态被设置为 ERROR,则该异常 SHOULD 在发生异常的 span 上记录为一个 Event。
事件的名称 MUST 为 "exception"。
状态: 开发中 - 有关如何跨信号报告错误的详细信息,请参阅 错误记录 文档。
使用 API 提供的 recordException 方法 实现此语义约定自动检测工具的典型模板可能如下所示(伪 Java)
Span span = myTracer.startSpan(/*...*/);
try {
// Code that does the actual work which the Span represents
} catch (Throwable e) {
span.recordException(e);
span.setAttribute(AttributeKey.stringKey("error.type"), e.getClass().getCanonicalName())
span.setStatus(StatusCode.ERROR, e.getMessage());
throw e;
} finally {
span.end();
}
Attributes
代表异常的事件 MUST 具有事件名称 exception。
此外,SHOULD 填写以下属性
exception.messageexception.stacktraceexception.type
这些属性的格式和语义在 语义约定 中定义。