Class MatchException
- All Implemented Interfaces:
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:
- 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
| Constructor | Description |
|---|---|
MatchException |
Constructs an MatchException with 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, toString | Modifier and Type | Method | Description |
|---|---|---|
final void |
addSuppressed |
Appends the specified exception to the exceptions that were suppressed in order to deliver this exception. |
Throwable |
fillInStackTrace() |
Fills in the execution stack trace. |
Throwable |
getCause() |
Returns the cause of this throwable or null if the cause is nonexistent or unknown. |
String |
getLocalizedMessage() |
Creates a localized description of this throwable. |
String |
getMessage() |
Returns the detail message string of this throwable. |
StackTraceElement[] |
getStackTrace() |
Provides programmatic access to the stack trace information printed by Throwable.printStackTrace(). |
final Throwable[] |
getSuppressed() |
Returns an array containing all of the exceptions that were suppressed, typically by the try-with-resources statement, in order to deliver this exception. |
Throwable |
initCause |
Initializes the cause of this throwable to the specified value. |
void |
printStackTrace() |
Prints this throwable and its backtrace to the standard error stream. |
void |
printStackTrace |
Prints this throwable and its backtrace to the specified print stream. |
void |
printStackTrace |
Prints this throwable and its backtrace to the specified print writer. |
void |
setStackTrace |
Sets the stack trace elements that will be returned by Throwable.getStackTrace() and printed by Throwable.printStackTrace() and related methods. |
String |
toString() |
Returns a short description of this throwable. |
Methods declared in class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait | Modifier and Type | Method | Description |
|---|---|---|
protected Object |
clone() |
Creates and returns a copy of this object. |
boolean |
equals |
Indicates whether some other object is "equal to" this one. |
protected void |
finalize() |
Deprecated, for removal: This API element is subject to removal in a future version. Finalization is deprecated and subject to removal in a future release. |
final Class |
getClass() |
Returns the runtime class of this Object. |
int |
hashCode() |
Returns a hash code value for this object. |
final void |
notify() |
Wakes up a single thread that is waiting on this object's monitor. |
final void |
notifyAll() |
Wakes up all threads that are waiting on this object's monitor. |
final void |
wait() |
Causes the current thread to wait until it is awakened, typically by being notified or interrupted. |
final void |
wait |
Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed. |
final void |
wait |
Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed. |
Constructor Details
MatchException
public MatchException(String message, Throwable cause)
MatchException with 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.)
© 1993, 2025, 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.