java.lang.Object
java.lang.Throwable
java.lang.Exception
java.lang.RuntimeException
java.lang.MatchException
- すべての実装されたインタフェース:
Serializable
public final class MatchException extends RuntimeException
MatchException
は、JavaプラットフォームのプレビューAPIです。
プレビュー機能は、今後のリリースで削除するか、Javaプラットフォームの永続機能にアップグレードすることができます。
パターン・マッチングで予期しない障害を示すためにスローされました。
実行時に指定されたパターンのいずれにも一致しない値が(switch式など)で検出されると、MatchException
がスローされることがあります。 これはいくつかのケースから発生する可能性があります:
- 別個のコンパイル異常。封印されたインタフェースの実行時に使用可能なサブタイプのセットがコンパイル時とは異なる場合、列挙型はコンパイル時とは異なる定数のセットを持つか、タイプ階層はコンパイル時と実行時の間に互換性のない方法で変更されています。
null
値および封印タイプを使用したネストされたパターン。 インタフェースまたは抽象クラスC
がA
およびB
を許可するように封印されている場合、レコード・パターンR(A a)
およびR(B b)
のセットは、単独コンポーネントがC
型であるレコードR
完全ですが、これらのパターンのいずれもnew R(null)
と一致しません。- NULLのターゲットおよびネストされたレコード・パターン。 唯一のコンポーネントが
S
であるレコード・タイプR
があり、これが唯一のコンポーネントが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 switch式の実行時評価」 - 導入されたバージョン:
- 19
- 関連項目:
-
コンストラクタのサマリー
コンストラクタ説明MatchException
(String message, Throwable cause) 指定された詳細メッセージおよび原因を使用してMatchException
を構築します。 -
メソッドのサマリー
クラス 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
を使用できます。