Класс 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 |
Создаёт MatchException с указанным подробным сообщением и причиной. |
Краткое описание методов
Методы, объявленные в классе 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://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/MatchException.html