English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

java에서는 언제 IllegalStateException과 IllegalArgumentException이 발생하나요?

IllegalStateException:

불법이거나 적절하지 않은 시간에 메서드를 호출하면 이 예외가 발생하고 IllegalStateException가 생성됩니다.

예를 들어remove()ArrayList 클래스의 메서드를 호출할 때next()이전 방법을 사용한 후 마지막 요소를 제거합니다.

  • 현재 위치에서 요소를 제거한 후 다음 요소로 이동하여 제거해야 합니다. 즉, 이 메서드를 매번 호출합니다.next()메서드를 호출할 때remove()이 메서드를 한 번 호출합니다.

  • 리스트(포인터)의 초기 위치가 첫 번째 요소 앞에 있기 때문에 다음 메서드를 호출하지 않으면 이 메서드를 호출할 수 없습니다.

이 메서드를 호출하면remove()메서드를 호출하지 않으면 java.lang.IllegalStateException이 발생합니다.

예제

아래의 예제에서는 다음과 같은 메서드를 사용하여 시도합니다remove()ArrayList의 요소를 제거한 후 첫 번째 요소로 이동하는 메서드를 제공합니다

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");
      //ArrayList의 Iterator 객체를 얻습니다
      ListIterator<String> it = list.listIterator();
      //초기 위치로 이동하지 않고 요소를 제거합니다
      it.remove();
   }
}

runtime exception

thread "main"에서 Exception 발생 java.lang.IllegalStateException
   at java.util.ArrayList$Itr.remove(Unknown Source)
   at MyPackage.NextElementExample.main(NextElementExample.java:17)

IllegalArgumentException-메서드나 생성자에 부적절한 파라미터를 전달할 때마다 IllegalArgumentException이 발생합니다.

예제

valueOf()java.sql.Date 클래스의 메서드는 JDBC 응축 형식 yyyy로 전달된 값을 받아들이며- [m] m- [d] d는 날짜의 String을 나타내며 java.sql.Date 객체로 변환합니다. 그러나 다른 어떤 형식으로도 date String을 전달하면 이 메서드는 IllegalArgumentException을 발생시킵니다.

import java.sql.Date;
import java.util.Scanner;
public class IllegalArgumentExample {
   public static void main(String args[]) {
      Scanner sc = new Scanner(System.in);
      System.out.println("Enter your date of birth in JDBC escape format (yyyy-mm-dd) ");
      String dateString = sc.next();
      Date date = Date.valueOf(dateString);
      System.out.println("Given date converted int to an object: "+date);
   }
}

runtime exception

Enter your date of birth in JDBC escape format (yyyy-mm-dd)
26-07-1989
Exception in thread "main" java.lang.IllegalArgumentException
   at java.sql.Date.valueOf(Unknown Source)
   at july_ipoindi.NextElementExample.main(NextElementExample.java:11)
좋아하는 것