クラスMatchException

すべての実装されたインタフェース:
Serializable

public final class MatchException extends RuntimeException
パターン・マッチングで予期しない障害を示すためにスローされました。

MatchExceptionは、完全なパターン一致言語構造(switch式など)で、実行時に指定されたパターンのいずれにも一致しない値が検出された場合、構成が完全とみなされていてもスローされます。 これは意図的なものであり、いくつかのケースから発生する可能性があります:

  • 個別のコンパイルの異常。パターンが参照するタイプ階層の一部が変更されたが、パターン・マッチングの構成は再コンパイルされていません。 たとえば、シール済インタフェースの実行時に許可されるサブタイプのセットがコンパイル時と異なる場合、または列挙型クラスに次のものがある場合実行時の列挙定数のセットがコンパイル時と異なるか、コンパイル時と実行時の間に互換性のない方法でタイプ階層が変更されたか。
  • null値およびシール済クラスを含むネストされたパターン。 たとえば、インタフェースIsealedで、2つの許可されたサブクラスAおよびBがあり、レコード・クラスRI型の単一のコンポーネントがある場合、2つのレコード・パターン R(A a)およびR(B b)は、R型に対して完全であるとみなされますが、これらのパターンはいずれもnew R(null)の結果とも一致しません。
  • null値およびネストされたレコード・パターン。 T型の単一コンポーネントを持つレコード・クラスSの場合(TString型の単一コンポーネントを持つ別のレコード・クラス)、ネストされたレコード・パターンR(S(var s))R型の完全とみなされますが、new R(null) (ただし、new R(new S(null))の結果と一致)の結果には一致しません。

MatchExceptionは、パターンに対して値と一致するパターン・プロセスによってスローされる場合もあります。 たとえば、レコード・パターンを含むパターン一致では、コンポーネント値を抽出するためにアクセサ・メソッドを暗黙的に呼び出す必要がある場合があります。 これらのアクセッサ・メソッドのいずれかが例外をスローすると、パターン一致が突然完了し、 MatchExceptionがスローされます。 元の例外は、MatchExceptioncauseとして設定されます。 suppressed例外は記録されません。

Java言語仕様を参照してください:
「14.11.3 switch文の実行」
「14.30.2 パターン・マッチング」
「15.28.2 switch式の実行時の評価」
導入されたバージョン:
21
関連項目:
  • コンストラクタのサマリー

    コンストラクタ
    コンストラクタ
    説明
    MatchException(String message, Throwable cause)
    指定された詳細メッセージおよび原因を使用してMatchExceptionを構築します。
  • メソッドのサマリー

    Throwableクラスで宣言されたメソッド

    addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
    修飾子と型
    メソッド
    説明
    final void
    この例外を提供する目的で抑制された例外に、指定された例外を追加します。
    実行スタック・トレースを埋め込みます。
    このスロー可能オブジェクトの原因を返しますが、原因が存在しないか不明な場合はnullを返します。
    このスロー可能オブジェクトの、ローカライズされた記述を作成します。
    このスロー可能オブジェクトの詳細メッセージ文字列を返します。
    Throwable.printStackTrace()によって出力されるスタック・トレース情報にプログラムでアクセスできるようにします。
    final Throwable[]
    この例外を提供する目的で(通常try-with-resources文によって)抑制された例外をすべて含む配列を返します。
    このスロー可能オブジェクトの原因を、指定された値に初期化します。
    void
    このスロー可能オブジェクトおよびそのバックトレースを標準エラー・ストリームに出力します。
    void
    このスロー可能オブジェクトとそのバックトレースを指定された印刷ストリームに出力します。
    void
    このスロー可能オブジェクトとそのバックトレースを指定されたプリント・ライターに出力します。
    void
    Throwable.getStackTrace()によって返され、Throwable.printStackTrace()と関連メソッドによって出力される、スタック・トレース要素を設定します。
    このスロー可能オブジェクトの短い記述を返します。

    クラスオブジェクトで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    修飾子と型
    メソッド
    説明
    protected Object
    このオブジェクトのコピーを作成して、返します。
    boolean
    このオブジェクトと他のオブジェクトが等しいかどうかを示します。
    protected void
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    最終決定は非推奨であり、将来のリリースで削除される可能性があります。
    final Class<?>
    このObjectの実行時クラスを返します。
    int
    このオブジェクトに対するハッシュ・コード値を返します。
    final void
    このオブジェクトのモニターで待機中のスレッドを1つ再開します。
    final void
    このオブジェクトのモニターで待機中のすべてのスレッドを再開します。
    final void
    現在のスレッドが目覚めるまで待機します。通常、notifiedまたはinterruptedです。
    final void
    wait(long timeoutMillis)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
    final void
    wait(long timeoutMillis, int nanos)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
  • コンストラクタの詳細

    • MatchException

      public MatchException(String message, Throwable cause)
      指定された詳細メッセージおよび原因を使用してMatchExceptionを構築します。
      パラメータ:
      message - 詳細メッセージ(あとでThrowable.getMessage()メソッドで取得できるように保存される)。
      cause - 原因(あとでThrowable.getCause()メソッドで取得できるように保存される)。 (null値が許可されており、原因が存在しないか不明であることを示す。)