Package io.reactivex.rxjava3.exceptions
Class CompositeException
- java.lang.Object
-
- java.lang.Throwable
-
- java.lang.Exception
-
- java.lang.RuntimeException
-
- io.reactivex.rxjava3.exceptions.CompositeException
-
- All Implemented Interfaces:
java.io.Serializable
public final class CompositeException extends java.lang.RuntimeExceptionRepresents an exception that is a composite of one or more other exceptions. ACompositeExceptiondoes not modify the structure of any exception it wraps, but at print-time it iterates through the list of Throwables contained in the composite in order to print them all. Its invariant is to contain an immutable, ordered (by insertion order), unique list of non-composite exceptions. You can retrieve individual exceptions in this list withgetExceptions(). TheprintStackTrace()implementation handles the StackTrace in a customized way instead of usinggetCause()so that it can avoid circular references. If you invokegetCause(), it will lazily create the causal chain but will stop if it finds any Throwable in the chain that it has already seen.- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static classCompositeException.ExceptionOverviewContains a formatted message with a simplified representation of the exception graph contained within the CompositeException.(package private) static classCompositeException.PrintStreamOrWriter(package private) static classCompositeException.WrappedPrintStreamSame abstraction and implementation as in JDK to allow PrintStream and PrintWriter to share implementation.(package private) static classCompositeException.WrappedPrintWriterSame abstraction and implementation as in JDK to allow PrintStream and PrintWriter to share implementation.
-
Field Summary
Fields Modifier and Type Field Description private java.lang.Throwablecauseprivate java.util.List<java.lang.Throwable>exceptionsprivate java.lang.Stringmessageprivate static longserialVersionUID
-
Constructor Summary
Constructors Constructor Description CompositeException(@NonNull java.lang.Iterable<? extends java.lang.Throwable> errors)Constructs a CompositeException with the given array of Throwables as the list of suppressed exceptions.CompositeException(@NonNull java.lang.Throwable... exceptions)Constructs a CompositeException with the given array of Throwables as the list of suppressed exceptions.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidappendStackTrace(CompositeException.PrintStreamOrWriter output, java.lang.Throwable ex, java.lang.String prefix)@NonNull java.lang.ThrowablegetCause()@NonNull java.util.List<java.lang.Throwable>getExceptions()Retrieves the list of exceptions that make up theCompositeException.@NonNull java.lang.StringgetMessage()voidprintStackTrace()All of the followingprintStackTracefunctionality is derived from JDKThrowableprintStackTrace.private voidprintStackTrace(CompositeException.PrintStreamOrWriter output)Special handling for printing out aCompositeException.voidprintStackTrace(java.io.PrintStream s)voidprintStackTrace(java.io.PrintWriter s)intsize()Returns the number of suppressed exceptions.
-
-
-
Field Detail
-
serialVersionUID
private static final long serialVersionUID
- See Also:
- Constant Field Values
-
exceptions
private final java.util.List<java.lang.Throwable> exceptions
-
message
private final java.lang.String message
-
cause
private java.lang.Throwable cause
-
-
Constructor Detail
-
CompositeException
public CompositeException(@NonNull @NonNull java.lang.Throwable... exceptions)
Constructs a CompositeException with the given array of Throwables as the list of suppressed exceptions.- Parameters:
exceptions- the Throwables to have as initially suppressed exceptions- Throws:
java.lang.IllegalArgumentException- ifexceptionsis empty.
-
CompositeException
public CompositeException(@NonNull @NonNull java.lang.Iterable<? extends java.lang.Throwable> errors)
Constructs a CompositeException with the given array of Throwables as the list of suppressed exceptions.- Parameters:
errors- the Throwables to have as initially suppressed exceptions- Throws:
java.lang.IllegalArgumentException- iferrorsis empty.
-
-
Method Detail
-
getExceptions
@NonNull public @NonNull java.util.List<java.lang.Throwable> getExceptions()
Retrieves the list of exceptions that make up theCompositeException.- Returns:
- the exceptions that make up the
CompositeException, as aListofThrowables
-
getMessage
@NonNull public @NonNull java.lang.String getMessage()
- Overrides:
getMessagein classjava.lang.Throwable
-
getCause
@NonNull public @NonNull java.lang.Throwable getCause()
- Overrides:
getCausein classjava.lang.Throwable
-
printStackTrace
public void printStackTrace()
All of the followingprintStackTracefunctionality is derived from JDKThrowableprintStackTrace. In particular, thePrintStreamOrWriterabstraction is copied wholesale. Changes from the official JDK implementation:- no infinite loop detection
- smaller critical section holding
PrintStreamlock - explicit knowledge about the exceptions
Listthat this loops through
- Overrides:
printStackTracein classjava.lang.Throwable
-
printStackTrace
public void printStackTrace(java.io.PrintStream s)
- Overrides:
printStackTracein classjava.lang.Throwable
-
printStackTrace
public void printStackTrace(java.io.PrintWriter s)
- Overrides:
printStackTracein classjava.lang.Throwable
-
printStackTrace
private void printStackTrace(CompositeException.PrintStreamOrWriter output)
Special handling for printing out aCompositeException. Loops through all inner exceptions and prints them out.- Parameters:
output- stream to print to
-
appendStackTrace
private void appendStackTrace(CompositeException.PrintStreamOrWriter output, java.lang.Throwable ex, java.lang.String prefix)
-
size
public int size()
Returns the number of suppressed exceptions.- Returns:
- the number of suppressed exceptions
-
-