Exceptions

Status: Stable

This document defines how to record exceptions and their required attributes.

Recording an Exception

An exception SHOULD be recorded as an Event on the span during which it occurred. The name of the event MUST be "exception".

A typical template for an auto-instrumentation implementing this semantic convention using an API-provided recordException method could look like this (pseudo-Java):

Span span = myTracer.startSpan(/*...*/);
try {
  // Code that does the actual work which the Span represents
} catch (Throwable e) {
  span.recordException(e, Attributes.of("exception.escaped", true));
  throw e;
} finally {
  span.end();
}

Attributes

An event representing an exception MUST have an event name exception.

Additionally, the following attributes SHOULD be filled out:

  • exception.escaped
  • exception.message
  • exception.stacktrace
  • exception.type

The format and semantics of these attributes are defined in semantic conventions.