# Class ThrowableCallStack

java.lang.Object
org.apache.tomcat.dbcp.pool2.impl.ThrowableCallStack

All Implemented Interfaces:
  `CallStack`

public class ThrowableCallStack extends Object implements CallStack
CallStack strategy that uses the stack trace from a `Throwable`. This strategy, while slower than the SecurityManager implementation, provides call stack method names and other metadata in addition to the call stack of classes.

Since:
  2.4.3
See Also:
  - `Throwable.fillInStackTrace()`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ThrowableCallStack(String messageFormat, boolean useTimestamp)`
  Creates a new instance.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `clear()`
  Clears the current stack trace snapshot.
  `void`
  `fillInStackTrace()`
  Takes a snapshot of the current call stack.
  `boolean`
  `printStackTrace(PrintWriter writer)`
  Prints the current stack trace if available to a PrintWriter.

  ### Methods inherited from class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### ThrowableCallStack

    public ThrowableCallStack(String messageFormat, boolean useTimestamp)
    Creates a new instance.
    Parameters:
      `messageFormat` - message format
      `useTimestamp` - whether to format the dates in the output message or not

- ## Method Details

  - ### clear

    public void clear()
    Description copied from interface: `CallStack`
    Clears the current stack trace snapshot. Subsequent calls to `CallStack.printStackTrace(PrintWriter)` will be no-ops until another call to `CallStack.fillInStackTrace()`.
    Specified by:
      `clear` in interface `CallStack`

  - ### fillInStackTrace

    public void fillInStackTrace()
    Description copied from interface: `CallStack`
    Takes a snapshot of the current call stack. Subsequent calls to `CallStack.printStackTrace(PrintWriter)` will print out that stack trace until it is cleared.
    Specified by:
      `fillInStackTrace` in interface `CallStack`

  - ### printStackTrace

    public boolean printStackTrace(PrintWriter writer)
    Description copied from interface: `CallStack`
    Prints the current stack trace if available to a PrintWriter. The format is undefined and is primarily useful for debugging issues with `PooledObject` usage in user code.
    Specified by:
      `printStackTrace` in interface `CallStack`
    Parameters:
      `writer` - a PrintWriter to write the current stack trace to if available
    Returns:
      true if a stack trace was available to print or false if nothing was printed