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
|