Класс MatchException
- Все реализуемые интерфейсы:
Serializable
public final class MatchException extends RuntimeException
MatchException может быть вызвано, когда исчерпывающая конструкция сопоставления с образцом (например, switch выражение) встречает значение, не соответствующее ни одному из указанных шаблонов во время выполнения, даже если конструкция считается исчерпывающей. Это преднамеренно и может возникнуть по ряду причин:
- Аномалии отдельной компиляции, когда части иерархии типов, на которые ссылаются шаблоны, были изменены, но конструкция сопоставления с образцом не была перекомпилирована. Например, если упечатанный интерфейс имеет другой набор разрешенных подтипов во время выполнения, чем во время компиляции, или если класс перечисления имеет другой набор констант перечисления во время выполнения, чем во время компиляции, или если иерархия типов была изменена каким-либо несовместимым способом между компиляцией и выполнением.
-
nullзначения и вложенные шаблоны, включающие упечатанные классы. Если, например, интерфейсIупечатан с двумя разрешенными подклассами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, 2023, 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/21/docs/api/java.base/java/lang/MatchException.html