Класс 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))).
MatchException также может быть выброшен в процессе сопоставления значения с шаблоном. Например, сопоставление шаблонов, включающее шаблон записи, может потребовать неявного вызова методов-аксессоров для извлечения значений компонентов. Если какой-либо из этих методов-аксессоров выбросит исключение, процесс сопоставления шаблонов завершится внезапно и выбросит
MatchException. Исходное исключение будет установлено как cause исключения MatchException. Никакие исключения suppressed не будут зарегистрированы.
- См. Спецификацию языка Java:
- 14.11.3 Выполнение оператора
switch
14.30.2 Сопоставление шаблонов
15.28.2 Вычисление выраженийswitchво время выполнения
- С:
- 21
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
MatchException |
Создает MatchException с указанным сообщением об ошибке и причиной. |
Краткое описание методов
Методы, объявленные в классе java.lang.Throwable
addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
Подробное описание конструкторов
MatchException
public MatchException(String message, Throwable cause)
MatchException с указанным сообщением об ошибке и причиной.- Параметры:
-
message- сообщение об ошибке (сохраняется для последующего извлечения методомThrowable.getMessage()). -
cause- причина (сохраняется для последующего извлечения методомThrowable.getCause()). (Разрешено значениеnull, указывающее, что причина отсутствует или неизвестна.)
© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/lang/MatchException.html