Groovy Documentation

## org.codehaus.groovy.runtime
[Java] Class StackTraceUtils

    java.lang.Object
      org.codehaus.groovy.runtime.StackTraceUtils

    public class StackTraceUtils
    extends java.lang.Object

Originally was grails.utils.GrailsUtils, removed some grails specific stuff. Utility methods removing internal lines from stack traces

Authors:
  Graeme Rocher

Version:
  \$Revision: 5544 \$

Since:
  1.5

Field Summary
`static java.lang.String` | `STACK_LOG_NAME`

Method Summary
`static void` | `addClassTest(Closure test)`
`static java.lang.Throwable` | `deepSanitize(java.lang.Throwable t)`
`static java.lang.Throwable` | `extractRootCause(java.lang.Throwable t)`
`static boolean` | `isApplicationClass(java.lang.String className)`
`static void` | `printSanitizedStackTrace(java.lang.Throwable t, java.io.PrintWriter p)`
`static void` | `printSanitizedStackTrace(java.lang.Throwable t)`
`static java.lang.Throwable` | `sanitize(java.lang.Throwable t)`
`static java.lang.Throwable` | `sanitizeRootCause(java.lang.Throwable t)`

Methods inherited from class java.lang.Object
java.lang.Object#wait(long), java.lang.Object#wait(long, int), java.lang.Object#wait(), java.lang.Object#equals(java.lang.Object), java.lang.Object#toString(), java.lang.Object#hashCode(), java.lang.Object#getClass(), java.lang.Object#notify(), java.lang.Object#notifyAll()

Field Detail

### STACK_LOG_NAME

    public static final java.lang.String STACK_LOG_NAME

Method Detail

### addClassTest

    public static void addClassTest(Closure test)

  Adds a groovy.lang.Closure to test whether the stack trace element should be added or not.

  The groovy.lang.Closure will be given the class name as parameter. the return value decides if the element will be added or not.

  - true - trace element will be added to the trace
  - false - trace element will not be added to the trace
  - null - continue with next test
  Groovy truth will be used to determine true and false, null is excluded from defaulting to false here. If all tests have been executed and all of them skipped, then the groovy standard filtering will take place.
  Parameters:
    `test` - the testing groovy.lang.Closure

### deepSanitize

    public static java.lang.Throwable deepSanitize(java.lang.Throwable t)

  Sanitize the exception and ALL nested causes

  This will MODIFY the stacktrace of the exception instance and all its causes irreversibly

  Parameters:
    `t` - a throwable
  Returns:
    The root cause exception instances, with stack trace modified to filter out groovy runtime classes

### extractRootCause

    public static java.lang.Throwable extractRootCause(java.lang.Throwable t)

  Extracts the root cause of the exception, no matter how nested it is

  Parameters:
    `t` - a Throwable
  Returns:
    The deepest cause of the exception that can be found

### isApplicationClass

    public static boolean isApplicationClass(java.lang.String className)

### printSanitizedStackTrace

    public static void printSanitizedStackTrace(java.lang.Throwable t, java.io.PrintWriter p)

### printSanitizedStackTrace

    public static void printSanitizedStackTrace(java.lang.Throwable t)

### sanitize

    public static java.lang.Throwable sanitize(java.lang.Throwable t)

  Remove all apparently groovy-internal trace entries from the exception instance

  This modifies the original instance and returns it, it does not clone

  Parameters:
    `t` - the Throwable whose stack trace we want to sanitize
  Returns:
    The original Throwable but with a sanitized stack trace

### sanitizeRootCause

    public static java.lang.Throwable sanitizeRootCause(java.lang.Throwable t)

  Get the root cause of an exception and sanitize it for display to the user

  This will MODIFY the stacktrace of the root cause exception object and return it

  Parameters:
    `t` - a throwable
  Returns:
    The root cause exception instance, with its stace trace modified to filter out groovy runtime classes

Groovy Documentation