Serializable
public final class MatchException extends RuntimeException
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
Statementswitch
ExpressionsConstructor | Description |
---|---|
MatchException |
Constructs an MatchException with the specified detail message and cause. |
addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
public MatchException(String message, Throwable cause)
MatchException
with the specified detail message and cause.message
- the detail message (which is saved for later retrieval by the Throwable.getMessage()
method).cause
- the cause (which is saved for later retrieval by the Throwable.getCause()
method). (A null
value is permitted, and indicates that the cause is nonexistent or unknown.)
© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/MatchException.html