아직 어떤 예외가 발생할지 모르기 때문에 Exception을 사용한다.
그리고 그걸 개발자가 확인할 수 있게 사용하는 것이 .printStackTrace(); 을 사용하여 시각화한다.
package class02;
import java.util.ArrayList;
import java.util.Scanner;
public class Test04 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayList<Integer> data = new ArrayList<Integer>();
data.add(-1);
data.add(0);
data.add(1);
data.add(2);
data.add(3);
System.out.println("로그: 배열리스트 확인 : " + data);
while (true) {
int res = 10;
try {
System.out.println("0~4 정수 입력");
int num = sc.nextInt();
res = 10 / data.get(num); // 예외가 발생할 수 있는 구간
System.out.println(res);
} catch (ArithmeticException e) {
System.out.println("0으로는 나눌 수 없습니다." + e.getMessage()); // 익셉션 클래스가 멤버변수로 Message를 가지고 있구나!
continue;
} catch (IndexOutOfBoundsException e) {
System.out.println("범위를 벗어날 수 없습니다.");
continue;
} catch (java.util.InputMismatchException e) {
System.out.println("문자열 좀 제거해줄래?");
sc.nextLine(); // 버퍼에 남아있는 String 값이 입력될 곳이 없어서, 버퍼 안에서 계속 입력된 채로 남아서
// 그것을 증발시키는 역할로 사용한다.
}
catch (Exception e) { // 어떤 예외가 발생할지 모르는 상황에는 최상위 Exception을 사용해준다.
System.out.println("아직 처리되지 않는 예외가 발생함!!");
e.printStackTrace();
}
}
}
}
'개발자노트' 카테고리의 다른 글
예외처리 throw (0) | 2022.06.24 |
---|---|
예외처리 - InputMismatchException (0) | 2022.06.24 |
예외와 예외처리(try, catch) 기본사용법 (0) | 2022.06.24 |
예외와 예외처리 (try,catch) (0) | 2022.06.24 |
컬렉션 프레임워크 {Map} 을 이용한 학생부예제 (0) | 2022.06.24 |