Класс 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 | Модификатор и тип | Метод | Описание |
|---|---|---|
final void |
addSuppressed |
Добавляет указанное исключение к исключениям, которые были подавлены для передачи этого исключения. |
Throwable |
fillInStackTrace() |
Заполняет трассировку стека выполнения. |
Throwable |
getCause() |
Возвращает причину этого объекта, способного выбрасывать исключения, или null, если причина отсутствует или неизвестна. |
String |
getLocalizedMessage() |
Создаёт локализованное описание этого объекта, способного выбрасывать исключения. |
String |
getMessage() |
Возвращает строку с подробным сообщением этого объекта, способного выбрасывать исключения. |
StackTraceElement[] |
getStackTrace() |
Предоставляет программный доступ к информации о трассировке стека, выводимой методом Throwable.printStackTrace(). |
final Throwable[] |
getSuppressed() |
Возвращает массив, содержащий все исключения, которые были подавлены, обычно оператором try-with-resources, для передачи этого исключения. |
Throwable |
initCause |
Инициализирует причину этого объекта, способного выбрасывать исключения, указанным значением. |
void |
printStackTrace() |
Выводит этот объект, способный выбрасывать исключения, и его трассировку в стандартный поток ошибок. |
void |
printStackTrace |
Выводит этот объект, способный выбрасывать исключения, и его трассировку в указанный поток печати. |
void |
printStackTrace |
Выводит этот объект, способный выбрасывать исключения, и его трассировку в указанный объект для печати. |
void |
setStackTrace |
Задаёт элементы трассировки стека, которые будут возвращены методом Throwable.getStackTrace() и выведены методом Throwable.printStackTrace() и связанными методами. |
String |
toString() |
Возвращает краткое описание этого объекта, способного выбрасывать исключения. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Указывает, является ли другой объект «равным» этому объекту. |
protected void |
finalize() |
Устарело, планируется удаление: этот элемент API может быть удалён в будущей версии. Финализация объявлена устаревшей и будет удалена в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Заставляет текущий поток ожидать, пока он не будет пробуждён, обычно посредством уведомления или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать, пока он не будет пробуждён, обычно посредством уведомления или прерывания, либо пока не истечёт определённое количество реального времени. |
final void |
wait |
Заставляет текущий поток ожидать, пока он не будет пробуждён, обычно посредством уведомления или прерывания, либо пока не истечёт определённое количество реального времени. |
Подробное описание конструкторов
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.