/** * Convert an array of {@link StackTraceElement}s to {@link SentryStackTraceElement}s. * * @param stackTraceElements Array of {@link StackTraceElement}s to convert. * @return Array of {@link SentryStackTraceElement}s. */ public static SentryStackTraceElement[] fromStackTraceElements(StackTraceElement[] stackTraceElements) { return fromStackTraceElements(stackTraceElements, null); }
/** * Creates a StackTrace for an {@link io.sentry.event.Event}. * <p> * With the help of the enclosing StackTrace, figure out which frames are in common with the parent exception * to potentially hide them later in Sentry. * * @param stackTrace StackTrace to provide to Sentry. * @param enclosingStackTrace StackTrace of the enclosing exception, to determine how many Stack frames * are in common. * @param cachedFrames Array of cached {@link Frame}s (from the Sentry agent) if available, * or null. */ public StackTraceInterface(StackTraceElement[] stackTrace, StackTraceElement[] enclosingStackTrace, Frame[] cachedFrames) { this.stackTrace = SentryStackTraceElement.fromStackTraceElements(stackTrace, cachedFrames); int m = stackTrace.length - 1; int n = enclosingStackTrace.length - 1; while (m >= 0 && n >= 0 && stackTrace[m].equals(enclosingStackTrace[n])) { m--; n--; } framesCommonWithEnclosing = stackTrace.length - 1 - m; }