クラスMatchException
java.lang.Object
java.lang.Throwable
java.lang.Exception
java.lang.RuntimeException
java.lang.MatchException
- すべての実装されたインタフェース:
Serializable
public final class MatchException extends RuntimeException
パターン・マッチングで予期しない障害を示すためにスローされました。
MatchExceptionは、完全なパターン一致言語構造(switch式など)で、実行時に指定されたパターンのいずれにも一致しない値が検出された場合、構成が完全とみなされていてもスローされます。 これは意図的なものであり、いくつかのケースから発生する可能性があります:
- 個別のコンパイルの異常。パターンが参照するタイプ階層の一部が変更されたが、パターン・マッチングの構成は再コンパイルされていません。 たとえば、シール済インタフェースの実行時に許可されるサブタイプのセットがコンパイル時と異なる場合、または列挙型クラスに次のものがある場合実行時の列挙定数のセットがコンパイル時と異なるか、コンパイル時と実行時の間に互換性のない方法でタイプ階層が変更されたか。
null値およびシール済クラスを含むネストされたパターン。 たとえば、インタフェースIがsealedで、2つの許可されたサブクラスAおよびBがあり、レコード・クラスRにI型の単一のコンポーネントがある場合、2つのレコード・パターンR(A a)およびR(B b)は、R型に対して完全であるとみなされますが、これらのパターンはいずれもnew R(null)の結果とも一致しません。null値およびネストされたレコード・パターン。T型の単一コンポーネントを持つレコード・クラスSの場合(TはString型の単一コンポーネントを持つ別のレコード・クラス)、ネストされたレコード・パターンR(S(var s))はR型の完全とみなされますが、new R(null)(ただし、new R(new S(null))の結果と一致)の結果には一致しません。
MatchExceptionは、パターンに対して値と一致するパターン・プロセスによってスローされる場合もあります。 たとえば、レコード・パターンを含むパターン一致では、コンポーネント値を抽出するためにアクセサ・メソッドを暗黙的に呼び出す必要がある場合があります。 これらのアクセッサ・メソッドのいずれかが例外をスローすると、パターン一致が突然完了し、 MatchExceptionがスローされます。 元の例外は、MatchExceptionのcauseとして設定されます。 suppressed例外は記録されません。
- Java言語仕様を参照してください:
-
「14.11.3
switch文の実行」
「14.30.2 パターン・マッチング」
「15.28.2switch式の実行時の評価」 - 導入されたバージョン:
- 21
- 関連項目:
-
コンストラクタのサマリー
コンストラクタコンストラクタ説明MatchException(String message, Throwable cause) 指定された詳細メッセージおよび原因を使用してMatchExceptionを構築します。 -
メソッドのサマリー
Throwableクラスで宣言されたメソッド
addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString修飾子と型メソッド説明final voidaddSuppressed(Throwable exception) この例外を提供する目的で抑制された例外に、指定された例外を追加します。実行スタック・トレースを埋め込みます。getCause()このスロー可能オブジェクトの原因を返しますが、原因が存在しないか不明な場合はnullを返します。このスロー可能オブジェクトの、ローカライズされた記述を作成します。このスロー可能オブジェクトの詳細メッセージ文字列を返します。Throwable.printStackTrace()によって出力されるスタック・トレース情報にプログラムでアクセスできるようにします。final Throwable[]この例外を提供する目的で(通常try-with-resources文によって)抑制された例外をすべて含む配列を返します。このスロー可能オブジェクトの原因を、指定された値に初期化します。voidこのスロー可能オブジェクトおよびそのバックトレースを標準エラー・ストリームに出力します。voidこのスロー可能オブジェクトとそのバックトレースを指定された印刷ストリームに出力します。voidこのスロー可能オブジェクトとそのバックトレースを指定されたプリント・ライターに出力します。voidsetStackTrace(StackTraceElement[] stackTrace) Throwable.getStackTrace()によって返され、Throwable.printStackTrace()と関連メソッドによって出力される、スタック・トレース要素を設定します。toString()このスロー可能オブジェクトの短い記述を返します。クラスオブジェクトで宣言されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait修飾子と型メソッド説明protected Objectclone()このオブジェクトのコピーを作成して、返します。booleanこのオブジェクトと他のオブジェクトが等しいかどうかを示します。protected voidfinalize()削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。最終決定は非推奨であり、将来のリリースで削除される可能性があります。final Class<?> getClass()このObjectの実行時クラスを返します。inthashCode()このオブジェクトに対するハッシュ・コード値を返します。final voidnotify()このオブジェクトのモニターで待機中のスレッドを1つ再開します。final voidこのオブジェクトのモニターで待機中のすべてのスレッドを再開します。final voidwait()現在のスレッドが目覚めるまで待機します。通常、notifiedまたはinterruptedです。final voidwait(long timeoutMillis) 現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。final voidwait(long timeoutMillis, int nanos) 現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
-
コンストラクタの詳細
-
MatchException
指定された詳細メッセージおよび原因を使用してMatchExceptionを構築します。- パラメータ:
message- 詳細メッセージ(あとでThrowable.getMessage()メソッドで取得できるように保存される)。cause- 原因(あとでThrowable.getCause()メソッドで取得できるように保存される)。 (null値が許可されており、原因が存在しないか不明であることを示す。)
-