Class 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
    Since:
    1.5
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.lang.String STACK_LOG_NAME  
    • Constructor Summary

      Constructors 
      Constructor Description
      StackTraceUtils()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static void addClassTest​(Closure test)
      Adds a groovy.lang.Closure to test whether the stack trace element should be added or not.
      static java.lang.Throwable deepSanitize​(java.lang.Throwable t)
      Sanitize the exception and ALL nested causes
      static java.lang.Throwable extractRootCause​(java.lang.Throwable t)
      Extracts the root cause of the exception, no matter how nested it is
      static boolean isApplicationClass​(java.lang.String className)  
      static void printSanitizedStackTrace​(java.lang.Throwable t)  
      static void printSanitizedStackTrace​(java.lang.Throwable t, java.io.PrintWriter p)  
      static java.lang.Throwable sanitize​(java.lang.Throwable t)
      Remove all apparently groovy-internal trace entries from the exception instance
      static java.lang.Throwable sanitizeRootCause​(java.lang.Throwable t)
      Get the root cause of an exception and sanitize it for display to the user
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • StackTraceUtils

        public StackTraceUtils()
    • 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
      • 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
      • printSanitizedStackTrace

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

        public static void printSanitizedStackTrace​(java.lang.Throwable t)
      • isApplicationClass

        public static boolean isApplicationClass​(java.lang.String className)
      • 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
      • 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
      • 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