Spec-Zone.ru › OpenJDK 25

Класс 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 с двумя разрешёнными подклассами A и B, а класс-запись R имеет единственный компонент типа I, то два образца записи R(A a) и R(B b) в совокупности считаются исчерпывающими для типа R, однако ни один из этих образцов не будет соответствовать результату new R(null).
  • null значения и вложенные образцы записи. Пусть класс-запись S имеет единственный компонент типа T, где T — другой класс-запись с единственным компонентом типа String. Тогда вложенный образец записи R(S(var s)) считается исчерпывающим для типа R, но он не соответствует результату new R(null) (тогда как он соответствует результату new R(new S(null)) does).

MatchException также может быть выброшено в процессе сопоставления значения с образцом. Например, сопоставление с образцом, включающее образец записи, может потребовать неявного вызова методов доступа для извлечения значений компонентов. Если любой из этих методов доступа выбрасывает исключение, сопоставление с образцом завершается аварийно и выбрасывает MatchException. Исходное исключение будет установлено в качестве cause исключения MatchException. Исключения, подавленные с помощью 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

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

Подробное описание конструкторов

MatchException

public MatchException(String message, Throwable cause)
Создаёт MatchException с указанным подробным сообщением и причиной.
Параметры:
message — подробное сообщение (сохраняется для последующего получения с помощью метода Throwable.getMessage()).
cause — причина (сохраняется для последующего получения с помощью метода Throwable.getCause()). (Допускается значение null, указывающее, что причина отсутствует или неизвестна.)

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/MatchException.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API