Package Summary Overview Summary

### class:MatchException [CHANGED]
All Implemented Interfaces: `Serializable` public final class MatchException extends RuntimeException `MatchException` is a preview API of the Java platform. Programs can only use `MatchException` when preview features are enabled. Preview features may be removed in a future release, or upgraded to permanent features of the Java platform. 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 provided specified patterns at runtime 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 runtime run time than it had at compilation compile time, or if an enum class has a different set of enum constants at runtime than it had at compilation compile time, or if the type hierarchy has been changed in some incompatible ways way between compile time and run time. `null` values and nested patterns using involving sealed types classes. If, for example, an interface `or abstract class `C`I` is `sealed` to permit with two permitted subclasses `A` and `B`, and a record class `R` has a single component of type `I`, then the set of two record patterns `R(A a)` and `R(B b)` together are considered to be exhaustive on a record for the type `R` whose sole component is of type `C`, but neither of these patterns will match against the result of `new R(null)` . `Null targetsnull` values and nested record patterns. Given a record class `S` with a single component of type ``R` whose sole componentT` , where `T` is `S`, which in turn is another record class with a record whose sole single component is of type `String`, then the nested record pattern `R(S(Stringvar s))` will is considered exhaustive for the type `R` but it does not match against the result of `new R(null)` .Match failures arising from unexpected inputs will generally throw `MatchException` only after all patterns have been tried; even if(whereas it does match against the result of `new R(new S(String snull))` does not match `new R(null)` , a later pattern (such as `R r` ) may still match the target). `MatchException` may also be thrown when operations performed as part by the process of pattern matching throw an unexpected exception a value against a pattern. For example, pattern matching involving a record pattern may cause require accessor methods such as record component accessorsto be implicitly invoked in order to extract pattern bindings the component values. If any of these accessor methods throw throws an exception, execution of thepattern matching construct may fail with 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 `switch` Statement 14.30.2 Pattern Matching 15.28.2 Run-Time Evaluation of `switch` Expressions Since: 19 21 See Also: Serialized Form
All Implemented Interfaces: `Serializable` public final class MatchException extends RuntimeException `MatchException` is a preview API of the Java platform. Programs can only use `MatchException` when preview features are enabled. Preview features may be removed in a future release, or upgraded to permanent features of the Java platform. 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 provided patterns at runtime. This can arise from a number of cases: Separate compilation anomalies, where a sealed interface has a different set of permitted subtypes at runtime than it had at compilation time, an enum has a different set of constants at runtime than it had at compilation time, or the type hierarchy has changed in incompatible ways between compile time and run time. `null` values and nested patterns using sealed types. If an interface or abstract class `C` is sealed to permit `A` and `B`, then the set of record patterns `R(A a)` and `R(B b)` are exhaustive on a record `R` whose sole component is of type `C`, but neither of these patterns will match `new R(null)` . Null targets and nested record patterns. Given a record type `R` whose sole component is `S`, which in turn is a record whose sole component is `String`, then the nested record pattern `R(S(String s))` will not match `new R(null)` . Match failures arising from unexpected inputs will generally throw `MatchException` only after all patterns have been tried; even if `R(S(String s))` does not match `new R(null)` , a later pattern (such as `R r` ) may still match the target. MatchException may also be thrown when operations performed as part of pattern matching throw an unexpected exception. For example, pattern matching may cause methods such as record component accessors to be implicitly invoked in order to extract pattern bindings. If these methods throw an exception, execution of the pattern matching construct may fail with `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 switch Statement 14.30.2 Pattern Matching 15.28.2 Run-Time Evaluation of switch Expressions Since: 19 See Also: Serialized Form | All Implemented Interfaces: `Serializable` public final class MatchException extends RuntimeException 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. `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. See Java Language Specification : 14.11.3 Execution of a `switch` Statement 14.30.2 Pattern Matching 15.28.2 Run-Time Evaluation of `switch` Expressions Since: 21 See Also: Serialized Form