MatchException
  public
  
  final
  
  class
  MatchException
  
  
  
  
  
  
  
  
  
  
    extends RuntimeException
  
  
  
  
  
  
| java.lang.Object | ||||
| ↳ | java.lang.Throwable | |||
| ↳ | java.lang.Exception | |||
| ↳ | java.lang.RuntimeException | |||
| ↳ | java.lang.MatchException | |||
Thrown to indicate an unexpected failure in pattern matching.
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 interface- Iis- sealedwith two permitted subclasses- Aand- B, and a record class- Rhas 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).
- nullvalues and nested record patterns. Given a record class- Swith a single component of type- T, where- Tis 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- Rbut 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.
Summary
| Public constructors | |
|---|---|
| 
      MatchException(String message, Throwable cause)
      Constructs an  | |
| Inherited methods | |
|---|---|
Public constructors
MatchException
public MatchException (String message, Throwable cause)
Constructs an MatchException with the specified detail message and
 cause.
| Parameters | |
|---|---|
| message | String: the detail message (which is saved for later retrieval
         by theThrowable.getMessage()method). | 
| cause | Throwable: the cause (which is saved for later retrieval by theThrowable.getCause()method). (Anullvalue is
         permitted, and indicates that the cause is nonexistent or
         unknown.) | 
