Class ExceptionUtils


  • @API(status=INTERNAL,
         since="1.0")
    public final class ExceptionUtils
    extends java.lang.Object
    Collection of utilities for working with exceptions.

    DISCLAIMER

    These utilities are intended solely for usage within the JUnit framework itself. Any usage by external parties is not supported. Use at your own risk!

    Since:
    1.0
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      private ExceptionUtils()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static java.util.List<java.lang.Throwable> findNestedThrowables​(java.lang.Throwable rootThrowable)
      Find all causes and suppressed exceptions in the stack trace of the supplied Throwable.
      static void pruneStackTrace​(java.lang.Throwable throwable, java.util.List<java.lang.String> classNames)
      Prune the stack trace of the supplied Throwable by removing stack trace elements from the org.junit, jdk.internal.reflect, and sun.reflect packages.
      static java.lang.String readStackTrace​(java.lang.Throwable throwable)
      Read the stacktrace of the supplied Throwable into a String.
      private static <T extends java.lang.Throwable>
      void
      throwAs​(java.lang.Throwable t)  
      static java.lang.RuntimeException throwAsUncheckedException​(java.lang.Throwable t)
      Throw the supplied Throwable, masked as an unchecked exception.
      • Methods inherited from class java.lang.Object

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

      • JUNIT_PLATFORM_LAUNCHER_PACKAGE_PREFIX

        private static final java.lang.String JUNIT_PLATFORM_LAUNCHER_PACKAGE_PREFIX
        See Also:
        Constant Field Values
      • STACK_TRACE_ELEMENT_FILTER

        private static final java.util.function.Predicate<java.lang.String> STACK_TRACE_ELEMENT_FILTER
    • Constructor Detail

      • ExceptionUtils

        private ExceptionUtils()
    • Method Detail

      • throwAsUncheckedException

        public static java.lang.RuntimeException throwAsUncheckedException​(java.lang.Throwable t)
        Throw the supplied Throwable, masked as an unchecked exception.

        The supplied Throwable will not be wrapped. Rather, it will be thrown as is using an exploit of the Java language that relies on a combination of generics and type erasure to trick the Java compiler into believing that the thrown exception is an unchecked exception even if it is a checked exception.

        Warning

        This method should be used sparingly.

        Parameters:
        t - the Throwable to throw as an unchecked exception; never null
        Returns:
        this method always throws an exception and therefore never returns anything; the return type is merely present to allow this method to be supplied as the operand in a throw statement
      • throwAs

        private static <T extends java.lang.Throwable> void throwAs​(java.lang.Throwable t)
                                                             throws T extends java.lang.Throwable
        Throws:
        T extends java.lang.Throwable
      • readStackTrace

        public static java.lang.String readStackTrace​(java.lang.Throwable throwable)
        Read the stacktrace of the supplied Throwable into a String.
      • pruneStackTrace

        @API(status=INTERNAL,
             since="1.10")
        public static void pruneStackTrace​(java.lang.Throwable throwable,
                                           java.util.List<java.lang.String> classNames)
        Prune the stack trace of the supplied Throwable by removing stack trace elements from the org.junit, jdk.internal.reflect, and sun.reflect packages. If a StackTraceElement matching one of the supplied classNames is encountered, all subsequent elements in the stack trace will be retained.

        Additionally, all elements prior to and including the first JUnit Platform Launcher call will be removed.

        Parameters:
        throwable - the Throwable whose stack trace should be pruned; never null
        classNames - the class names that should stop the pruning if encountered; never null
        Since:
        1.10
      • findNestedThrowables

        @API(status=INTERNAL,
             since="1.10")
        public static java.util.List<java.lang.Throwable> findNestedThrowables​(java.lang.Throwable rootThrowable)
        Find all causes and suppressed exceptions in the stack trace of the supplied Throwable.
        Parameters:
        rootThrowable - the Throwable to explore; never null
        Returns:
        an immutable list of all throwables found, including the supplied one; never null
        Since:
        1.10