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:
null values and nested patterns involving sealed classes. If,
for example, an interface I is sealed with two permitted
subclasses A and B, and a record class R has a
single component of type I, then the two record patterns R(A a) and R(B b) together are considered to be exhaustive for
the type R, but neither of these patterns will match against the
result of new R(null).null values and nested record patterns. Given a record class
S with a single component of type T, where T is
another record class with a single component of type String,
then the nested record pattern R(S(var s)) is considered
exhaustive for the type R but it does not match against the
result of new R(null) (whereas it does match against the result
of new 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.
switch Statement, 14.30.2 Pattern Matching, 15.28.2 Run-Time Evaluation of switch Expressions
| Modifier and Type | Field and Description |
|---|---|
| private static final long |
| Access | Constructor and Description |
|---|---|
| public | MatchException(String
the detail message (which is saved for later retrieval
by the message, Throwable getMessage() method).the cause (which is saved for later retrieval by the
cause)getCause() method). (A null value is
permitted, and indicates that the cause is nonexistent or
unknown.)Constructs an |
| serialVersionUID | back to summary |
|---|---|
| private static final long serialVersionUID Hides java. | |
| MatchException | back to summary |
|---|---|
| public MatchException(String message, Throwable cause) Constructs an
| |