Класс NoSuchElementException
Класс NoSuchElementException наследуется от класса RuntimeException
и представляет собой unchecked-исключение, которое выбрасывается,
когда запрашиваемый элемент не найден. Чаще всего это исключение
возникает при работе с итераторами, когда метод next
вызывается после того, как все элементы уже были перебраны.
Также оно может возникнуть при работе с классом Scanner,
когда в потоке ввода отсутствуют данные ожидаемого типа,
и с классом Optional при вызове метода get
у пустого контейнера. Конструктор класса не принимает параметров
или принимает строку с сообщением об ошибке.
Синтаксис
new NoSuchElementException()
new NoSuchElementException(String message)
Пример
Давайте рассмотрим ситуацию, когда исключение
NoSuchElementException возникает при работе
с итератором после обхода всех элементов:
import java.util.List;
import java.util.Iterator;
import java.util.NoSuchElementException;
public class Main
{
public static void main(String[] args)
{
List<String> list = List.of("a", "b", "c");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext())
{
System.out.println(iterator.next());
}
try
{
iterator.next();
}
catch (NoSuchElementException e)
{
System.out.println("Caught: " + e.getMessage());
}
}
}
Результат выполнения кода:
"a"
"b"
"c"
"Caught: null"
Пример
Давайте создадим исключение NoSuchElementException
вручную с собственным сообщением и обработаем его:
import java.util.NoSuchElementException;
public class Main
{
public static void main(String[] args)
{
try
{
throw new NoSuchElementException("Element not found");
}
catch (NoSuchElementException e)
{
System.out.println(e.getMessage());
}
}
}
Результат выполнения кода:
"Element not found"
Пример
Давайте посмотрим, как исключение NoSuchElementException
возникает при вызове метода get у пустого
объекта Optional:
import java.util.Optional;
import java.util.NoSuchElementException;
public class Main
{
public static void main(String[] args)
{
Optional<String> empty = Optional.empty();
try
{
empty.get();
}
catch (NoSuchElementException e)
{
System.out.println("Optional is empty");
}
}
}
Результат выполнения кода:
"Optional is empty"
Смотрите также
-
класс
RuntimeException,
который является родителем исключения -
класс
IndexOutOfBoundsException,
который сигнализирует о выходе за границы -
оператор
throw,
который выбрасывает исключение -
конструкция
catch,
которая перехватывает исключение