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を使用できます。