예) 배열의 인덱스 범위를 벗어남
🔍 Shift + F2 → Java API 문서 페이지에서 검색
⭐ 모든 예외 클래스의 부모 클래스는 java.lang.Exception 클래스이다!
Unchecked Exception으로, 주로 프로그래머의 부주의로 인한 오류
예외 처리보다는 코드를 수정해야 하는 경우가 많음
RuntimeException 자식 클래스
종류 | 설명 |
---|---|
ArithmeticException | 0으로 나누기 연산을 진행하려는 경우 |
InputMismatchException | Scanner를 사용하여 데이터 입력 시 입력 받는 자료형이 불일치할 경우 |
NullPointerException | 참조변수가 참조하려는 객체가 Null일 경우 |
try : 예외가 발생할 가능성이 있는 코드를 작성하는 부분
catch : try 구문에서 예외 발생 시 해당하는 예외 상황에 대한 처리를 작성하는 부분
여러 개의 예외 처리가 가능하지만 Exception 간의 상속 관계를 고려해야 함
(매개변수의 다형성)
finally : 예외 발생 여부와 관계 없이 무조건 실행되어야 하는 코드를 작성하는 부분
주로 java.io나 java.sql 패키지의 메서드를 처리할 때 이용
public int inputNumber(int i) {
Scanner sc = new Scanner(System.in);
int num;
while (true) {
System.out.print(i + "번째 정수 입력 : ");
try {
num = sc.nextInt();
// 다음 정수를 입력 받아 얻어와야 하지만
// 실수 또는 다른 자료형을 입력했을 때
// InputMismatchException 발생
break;
} catch (InputMismatchException e) {
System.out.println("잘못 입력하셨습니다. 다시 입력해주세요.");
sc.nextLine();
// 입력 버퍼에 남아있는 잘못 입력된 값을 제거해줌으로써
// 다음 정수 입력 시 문제가 발생하지 않도록 함
}
}
return num;
}