English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
예외는 프로그램 실행 중에 발생하는 문제(실행 시간 오류)입니다. 예외가 발생하면 프로그램이 갑자기 중단되고, 예외가 발생한 행 이후의 코드는 결코 실행되지 않습니다. 각 예외는 자신의 클래스로 표현됩니다.
이는 실행 중에 발생하는 실행 시간 예외입니다.
객체(집합, 배열 또는 다른 객체)의 끝에 도달한 후 다음 요소를 가져오려고 시도할 때, 공백 객체에서 요소를 가져오거나 Enumeration, Iterator 또는 tokenizer의 접근자 메서드(예: next() 또는 nextElement())를 사용하여 집합, 배열 또는 다른 객체의 내용을 접근하면 NoSuchElementException가 생성됩니다.
Enumeration의 nextElement() 메서드-VectorHashTable와 같은 컬렉션은 elements() 메서드를 가지며, 이 메서드는 집합 내 모든 요소를 포함하는 Enumeration(인터페이스) 객체를 반환합니다.
이 객체를 사용하여 nextElement() 메서드를 통해 요소를 차례대로 가져올 수 있습니다.
이 메서드를 비어 있는 집합에 호출하거나 집합의 끝에 도달한 후 호출하면 실행 중 NoSuchElementException이 생성됩니다.
import java.util.Enumeration; import java.util.Vector; public class EnumExample { public static void main(String args[]) { //벡터를 인스턴스화하다 Vector<Integer> vec = new Vector<Integer>(; //벡터를 채우기 vec.add(1254); vec.add(4587); //요소를 검색하는 사용 Enumeration<Integer> en = vec.elements(); System.out.println(en.nextElement()); System.out.println(en.nextElement()); //끝에 도달한 후 다음 요소를 검색 System.out.println(en.nextElement()); } }
1254 4587 thread "main"에서 예외 발생 java.util.NoSuchElementException: Vector Enumeration at java.util.Vector$1.nextElement(Unknown Source) at MyPackage.EnumExample.main(EnumExample.java:18)
StringTokenizer의 nextElement()과 nextToken() 메서드 -StringTokenizer 클래스는 String과 delimiter를 생성자의 하나의 매개변수로 받아들이며, 주어진 구분자가 매번 나타날 때마다 주어진 String을 여러 작은 토큰으로 분할합니다.
이러한 nextToken()과 nextElement() 메서드는 토큰 생성기에서 다음 토큰을 반환합니다. 비어 있는 Tokenizer 객체에 이 메서드를 호출하거나 종료 시 NoSuchElementException을 호출하면 실행 중 NoSuchElementException이 생성됩니다.
import java.util.StringTokenizer; public class StringTokenizerExample{ public static void main(String args[]) { String str = "Hello how are you"; //StringTokenizer 클래스를 인스턴스화 StringTokenizer tokenizer = new StringTokenizer(str, " "); //모든 토큰을 출력 System.out.println(tokenizer.nextToken()); System.out.println(tokenizer.nextToken()); System.out.println(tokenizer.nextToken()); System.out.println(tokenizer.nextToken()); //끝에 도달한 후 다음 토큰을 얻습니다 tokenizer.nextToken(); tokenizer.nextElement(); } }
Hello how are you Exception in thread "main" java.util.NoSuchElementException at java.util.StringTokenizer.nextToken(Unknown Source) at MyPackage.StringTokenizerExample.main(StringTokenizerExample.java:16)
Iterator의 next() 메서드 -Java는 Iterator와 ListIterator 클래스를 집합 객체의 요소를 검색하기 위해 제공합니다. Iterator와 ListIterator의 next() 메서드는 집합의 다음 요소를 반환합니다.
이 메서드들을 빈 집합에서 호출하거나NoSuchElementException을 호출할 때 실행 중 오류가 발생합니다.
또한, 이 메서드를 빈 객체나 그 선언 위치에서 호출하면 ListIterator의 previous() 메서드는 집합의 이전 요소를 반환하고 실행 중 오류를 발생시킵니다.
import java.util.ArrayList; import java.util.Iterator; public class NextElementExample{ public static void main(String args[]) { //ArrayList 객체를 인스턴스화하기 ArrayList<String> list = new ArrayList<String>(); //ArrayList을 채우기 list.add("apples"); list.add("mangoes"); list.add("oranges"); //ArrayList의 Iterator 객체를 가져오기 Iterator it = list.iterator(); System.out.println(it.next()); System.out.println(it.next()); System.out.println(it.next()); //끝에 도달한 후 다음 요소를 검색 it.next(); } }
apples mangoes oranges Exception in thread "main" java.util.NoSuchElementException at java.util.ArrayList$Itr.next(Unknown Source) at MyPackage.NextElementExample.main(NextElementExample.java:19)
import java.util.ArrayList; import java.util.ListIterator; public class NextElementExample{ public static void main(String args[]) { //ArrayList 객체를 인스턴스화하기 ArrayList<String> list = new ArrayList<String>(); //ArrayList을 채우기 list.add("apples"); list.add("mangoes"); list.add("oranges"); //ArrayList의 Iterator 객체를 가져오기 ListIterator<String> it = list.listIterator(); it.next(); it.next(); it.next(); System.out.println(it.previous()); System.out.println(it.previous()); System.out.println(it.previous()); System.out.println(it.previous()); } }
출력 결과
oranges mangoes apples Exception in thread "main" java.util.NoSuchElementException at java.util.ArrayList$ListItr.previous(Unknown Source) at MyPackage.NextElementExample.main(NextElementExample.java:22)