java.lang.Object
java.lang.Throwable
java.lang.Exception
java.lang.RuntimeException
java.lang.MatchException
- 所有已实现的接口:
Serializable
MatchException 是 Java 平台的预览 API。
预览功能可能会在未来的版本中删除,或升级为 Java 平台的永久功能。
抛出以指示模式匹配中的意外失败。
当详尽的模式匹配语言构造(例如 switch 表达式)在运行时遇到与任何提供的模式不匹配的值时,可能会抛出 MatchException。这可能由多种情况引起:
- 单独的编译异常,其中密封接口在运行时具有与编译时不同的允许子类型集,枚举在运行时具有与编译时不同的常量集,或者类型层次结构以不兼容的方式更改编译时和运行时之间。
null使用密封类型的值和嵌套模式。如果接口或抽象类C被密封以允许A和B,则记录模式集R(A a)和R(B b)在记录R上是详尽的,其唯一组件是类型C,但这些模式都不匹配new R(null)。- 空目标和嵌套记录模式。给定一个记录类型
R,它的唯一组成部分是S,而它又是一个唯一组成部分是String的记录,那么嵌套记录模式R(S(String s))将不匹配new R(null)。
意外输入引起的匹配失败通常只会在尝试所有模式后抛出MatchException;即使 R(S(String s)) 不匹配 new R(null) ,后面的模式(例如 R r )仍可能与目标匹配。
当作为模式匹配的一部分执行的操作抛出意外异常时,也可能抛出 MatchException。例如,模式匹配可能会导致隐式调用记录组件访问器等方法以提取模式绑定。如果这些方法抛出异常,则模式匹配构造的执行可能会失败并返回 MatchException。原始异常将被设置为 MatchException 的 cause 。不会记录 suppressed 异常。
- 看Java 语言规范:
-
14.11.3 switch语句的执行
14.30.2 模式匹配
15.28.2 开关表达式的运行时评估
- 自从:
- 19
- 参见:
-
构造方法总结
构造方法 -
方法总结
在类 java.lang.Throwable 中声明的方法
addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
-
构造方法详细信息
-
MatchException
使用指定的详细消息和原因构造一个MatchException。- 参数:
message- 详细消息(保存以供以后通过Throwable.getMessage()方法检索)。cause- 原因(保存以供以后通过Throwable.getCause()方法检索)。 (允许使用null值,表示原因不存在或未知。)
-
MatchException。