Class MatchException
- All Implemented Interfaces:
Serializable
MatchException may be thrown when an exhaustive pattern matching
language construct (such as a switch expression) encounters a value
that does not match any of the specified patterns at run time, even though
the construct has been deemed exhaustive. This is intentional and can arise
from a number of cases:
- Separate compilation anomalies, where parts of the type hierarchy that the patterns reference have been changed, but the pattern matching construct has not been recompiled. For example, if a sealed interface has a different set of permitted subtypes at run time than it had at compile time, or if an enum class has a different set of enum constants at runtime than it had at compile time, or if the type hierarchy has been changed in some incompatible way between compile time and run time.
nullvalues and nested patterns involving sealed classes. If, for example, an interfaceIissealedwith two permitted subclassesAandB, and a record classRhas a single component of typeI, then the two record patternsR(A a)andR(B b)together are considered to be exhaustive for the typeR, but neither of these patterns will match against the result ofnew R(null).nullvalues and nested record patterns. Given a record classSwith a single component of typeT, whereTis another record class with a single component of typeString, then the nested record patternR(S(var s))is considered exhaustive for the typeRbut it does not match against the result ofnew R(null)(whereas it does match against the result ofnew R(new S(null))does).
MatchException may also be thrown by the process of pattern matching
a value against a pattern. For example, pattern matching involving a record
pattern may require accessor methods to be implicitly invoked in order to
extract the component values. If any of these accessor methods throws an
exception, pattern matching completes abruptly and throws
MatchException. The original exception will be set as a cause of the MatchException. No suppressed exceptions will be
recorded.
- See Java Language Specification:
-
14.11.3 Execution of a
switchStatement
14.30.2 Pattern Matching
15.28.2 Run-Time Evaluation ofswitchExpressions - Since:
- 21
- See Also:
-
Constructor Summary
ConstructorsConstructorDescriptionMatchException(String message, Throwable cause) Constructs anMatchExceptionwith the specified detail message and cause. -
Method Summary
Methods declared in class Throwable
addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toStringModifier and TypeMethodDescriptionfinal voidaddSuppressed(Throwable exception) The specified exception is going to be suppressed in order to give priority to this exception (primary exception) and to be appended to the list of suppressed exceptions.Record in the receiver a walkback from the point where this message was sent.getCause()Answers the cause of this Throwable, or null if there is no cause.Answers the extra information message which was provided when the throwable was created.Answers the extra information message which was provided when the throwable was created.Answers an array of StackTraceElement.final Throwable[]Returns an array of exceptions suppressed, typically by the automatically generated code from the try-with-resources statement, in order to give priority to this exception (primary exception).Initialize the cause of the receiver.voidOutputs a printable representation of the receiver's walkback on the System.err stream.voidOutputs a printable representation of the receiver's walkback on the stream specified by the argument.voidOutputs a printable representation of the receiver's walkback on the writer specified by the argument.voidsetStackTrace(StackTraceElement[] trace) Sets the array of StackTraceElements.toString()Answers a string containing a concise, human-readable description of the receiver.Methods declared in class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitModifier and TypeMethodDescriptionprotected Objectclone()Answers a new instance of the same class as the receiver, whose slots have been filled in with the values in the slots of the receiver.booleanCompares the argument to the receiver, and answers true if they represent the same object using a class specific comparison.protected voidfinalize()Deprecated, for removal: This API element is subject to removal in a future version.May cause performance issues, deadlocks and hangs.getClass()Answers the unique instance of java.lang.Class which represents the class of the receiver.inthashCode()Answers an integer hash code for the receiver.final voidnotify()Causes one thread which iswaiting on the receiver to be made ready to run.final voidCauses all threads which arewaiting on the receiver to be made ready to run.final voidwait()Causes the thread which sent this message to be made not ready to run pending some change in the receiver (as indicated bynotifyornotifyAll).final voidwait(long time) Causes the thread which sent this message to be made not ready to run either pending some change in the receiver (as indicated bynotifyornotifyAll) or the expiration of the timeout.final voidwait(long time, int frac) Causes the thread which sent this message to be made not ready to run either pending some change in the receiver (as indicated bynotifyornotifyAll) or the expiration of the timeout.
-
Constructor Details
-
MatchException
Constructs anMatchExceptionwith the specified detail message and cause.- Parameters:
message- the detail message (which is saved for later retrieval by theThrowable.getMessage()method).cause- the cause (which is saved for later retrieval by theThrowable.getCause()method). (Anullvalue is permitted, and indicates that the cause is nonexistent or unknown.)
-