Class ThrowableProxy

  • All Implemented Interfaces:
    Serializable

    public class ThrowableProxy
    extends Object
    implements Serializable
    Wraps a Throwable to add packaging information about each stack trace element.

    A proxy is used to represent a throwable that may not exist in a different class loader or JVM. When an application deserializes a ThrowableProxy, the throwable may not be set, but the throwable's information is preserved in other fields of the proxy like the message and stack trace.

    TODO: Move this class to org.apache.logging.log4j.core because it is used from LogEvent.

    TODO: Deserialize: Try to rebuild Throwable if the target exception is in this class loader?

    See Also:
    Serialized Form
    • Constructor Detail

      • ThrowableProxy

        public ThrowableProxy​(Throwable throwable)
        Constructs the wrapper for the Throwable that includes packaging data.
        Parameters:
        throwable - The Throwable to wrap, must not be null.
    • Method Detail

      • formatWrapper

        public void formatWrapper​(StringBuilder sb,
                                  ThrowableProxy cause,
                                  String suffix)
        Formats the specified Throwable.
        Parameters:
        sb - StringBuilder to contain the formatted Throwable.
        cause - The Throwable to format.
        suffix -
      • formatWrapper

        public void formatWrapper​(StringBuilder sb,
                                  ThrowableProxy cause,
                                  List<String> ignorePackages,
                                  String suffix)
        Formats the specified Throwable.
        Parameters:
        sb - StringBuilder to contain the formatted Throwable.
        cause - The Throwable to format.
        ignorePackages - The List of packages to be suppressed from the trace.
        suffix -
      • formatWrapper

        public void formatWrapper​(StringBuilder sb,
                                  ThrowableProxy cause,
                                  List<String> ignorePackages,
                                  TextRenderer textRenderer,
                                  String suffix)
        Formats the specified Throwable.
        Parameters:
        sb - StringBuilder to contain the formatted Throwable.
        cause - The Throwable to format.
        ignorePackages - The List of packages to be suppressed from the stack trace.
        textRenderer - The text renderer.
        suffix - Append this to the end of each stack frame.
      • formatWrapper

        public void formatWrapper​(StringBuilder sb,
                                  ThrowableProxy cause,
                                  List<String> ignorePackages,
                                  TextRenderer textRenderer,
                                  String suffix,
                                  String lineSeparator)
        Formats the specified Throwable.
        Parameters:
        sb - StringBuilder to contain the formatted Throwable.
        cause - The Throwable to format.
        ignorePackages - The List of packages to be suppressed from the stack trace.
        textRenderer - The text renderer.
        suffix - Append this to the end of each stack frame.
        lineSeparator - The end-of-line separator.
      • getCauseStackTraceAsString

        public String getCauseStackTraceAsString​(String suffix)
        Formats the Throwable that is the cause of this Throwable.
        Parameters:
        suffix -
        Returns:
        The formatted Throwable that caused this Throwable.
      • getCauseStackTraceAsString

        public String getCauseStackTraceAsString​(List<String> packages,
                                                 String suffix)
        Formats the Throwable that is the cause of this Throwable.
        Parameters:
        packages - The List of packages to be suppressed from the trace.
        suffix - Append this to the end of each stack frame.
        Returns:
        The formatted Throwable that caused this Throwable.
      • getCauseStackTraceAsString

        public String getCauseStackTraceAsString​(List<String> ignorePackages,
                                                 TextRenderer textRenderer,
                                                 String suffix)
        Formats the Throwable that is the cause of this Throwable.
        Parameters:
        ignorePackages - The List of packages to be suppressed from the trace.
        textRenderer - The text renderer.
        suffix - Append this to the end of each stack frame.
        Returns:
        The formatted Throwable that caused this Throwable.
      • getCauseStackTraceAsString

        public String getCauseStackTraceAsString​(List<String> ignorePackages,
                                                 TextRenderer textRenderer,
                                                 String suffix,
                                                 String lineSeparator)
        Formats the Throwable that is the cause of this Throwable.
        Parameters:
        ignorePackages - The List of packages to be suppressed from the stack trace.
        textRenderer - The text renderer.
        suffix - Append this to the end of each stack frame.
        lineSeparator - The end-of-line separator.
        Returns:
        The formatted Throwable that caused this Throwable.
      • getCommonElementCount

        public int getCommonElementCount()
        Returns the number of elements that are being omitted because they are common with the parent Throwable's stack trace.
        Returns:
        The number of elements omitted from the stack trace.
      • getExtendedStackTrace

        public ExtendedStackTraceElement[] getExtendedStackTrace()
        Gets the stack trace including packaging information.
        Returns:
        The stack trace including packaging information.
      • getExtendedStackTraceAsString

        public String getExtendedStackTraceAsString()
        Formats the stack trace including packaging information.
        Returns:
        The formatted stack trace including packaging information.
      • getExtendedStackTraceAsString

        public String getExtendedStackTraceAsString​(String suffix)
        Formats the stack trace including packaging information.
        Parameters:
        suffix - Append this to the end of each stack frame.
        Returns:
        The formatted stack trace including packaging information.
      • getExtendedStackTraceAsString

        public String getExtendedStackTraceAsString​(List<String> ignorePackages,
                                                    String suffix)
        Formats the stack trace including packaging information.
        Parameters:
        ignorePackages - List of packages to be ignored in the trace.
        suffix - Append this to the end of each stack frame.
        Returns:
        The formatted stack trace including packaging information.
      • getExtendedStackTraceAsString

        public String getExtendedStackTraceAsString​(List<String> ignorePackages,
                                                    TextRenderer textRenderer,
                                                    String suffix)
        Formats the stack trace including packaging information.
        Parameters:
        ignorePackages - List of packages to be ignored in the trace.
        textRenderer - The message renderer.
        suffix - Append this to the end of each stack frame.
        Returns:
        The formatted stack trace including packaging information.
      • getExtendedStackTraceAsString

        public String getExtendedStackTraceAsString​(List<String> ignorePackages,
                                                    TextRenderer textRenderer,
                                                    String suffix,
                                                    String lineSeparator)
        Formats the stack trace including packaging information.
        Parameters:
        ignorePackages - List of packages to be ignored in the trace.
        textRenderer - The message renderer.
        suffix - Append this to the end of each stack frame.
        lineSeparator - The end-of-line separator.
        Returns:
        The formatted stack trace including packaging information.
      • formatExtendedStackTraceTo

        public void formatExtendedStackTraceTo​(StringBuilder sb,
                                               List<String> ignorePackages,
                                               TextRenderer textRenderer,
                                               String suffix,
                                               String lineSeparator)
        Formats the stack trace including packaging information.
        Parameters:
        sb - Destination.
        ignorePackages - List of packages to be ignored in the trace.
        textRenderer - The message renderer.
        suffix - Append this to the end of each stack frame.
        lineSeparator - The end-of-line separator.
      • getLocalizedMessage

        public String getLocalizedMessage()
      • getMessage

        public String getMessage()
      • getName

        public String getName()
        Return the FQCN of the Throwable.
        Returns:
        The FQCN of the Throwable.
      • getSuppressedProxies

        public ThrowableProxy[] getSuppressedProxies()
        Gets proxies for suppressed exceptions.
        Returns:
        proxies for suppressed exceptions.
      • getSuppressedStackTrace

        public String getSuppressedStackTrace​(String suffix)
        Formats the suppressed Throwables.
        Parameters:
        suffix -
        Returns:
        The formatted suppressed Throwables.
      • getThrowable

        public Throwable getThrowable()
        The throwable or null if this object is deserialized from XML or JSON.
        Returns:
        The throwable or null if this object is deserialized from XML or JSON.
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object