# 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