프로그래머가 직접 예측하여 막을 수 있는 처리가능한 오류. 만일 응용프로그램이 예외에 대처하는 코드를 가지고 있지 않다면, 자바 플랫폼은 응용프로그램을 곧바로 중단 시킴.
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt(); // 나뉨수 입력
int b = scanner.nextInt();// 나눔수 입력
int c = a/b;
System.out.println(a+"를 "+b+"로 나누면 몫은 "+c+"입니다.");
실행 결과(0이 아닌 수로 나눴을 때)

실행 결과(0으로 나눴을 때)

사용자가 0을 임력하는 예외 상황은 컴파일 시에 미리 걸러낼 수 없지만, 예외가 발생할 때 응용프로그램이 이에 적절히 대응하여 강제 종료되지 않고 사용자의 입력을 다시 받는 별도의 조치를 취할 수 있음. -> 예외 처리
1) try-catch-finally 문
사용법
try {
// 예외가 발생할 가능성이 있는 실행문(try 블록)
}
catch (처리할 예외 타입 선언) {
// 예외 처리문(catch 블록)
}
finally {
// 예외 발생 여부오 상관없이 무조건 실행되는 문장(finally 블록)
}
예외가 발생되지않은 경우
try {
// 실행문
}
catch (처리할 예외 타입 선언) {
// 예외 처리문
}
finally {
// finally 블록문
}
실행문 -> finally 블록문
예외가 발생된 경우
try {
// 실행문
}
catch (처리할 예외 타입 선언) {
// 예외 처리문
}
finally {
// finally 블록문
}
예외 처리문 -> finally 블록문
실행 예시
int[] intArray = new int[3] {0, 1, 2};
try {
System.out.println(arr[3]);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("ArrayIndexOutOfBoundsException: " + e.getMessage());
} catch (ArithmeticException e) {
System.out.println("ArithmeticException: " + e.getMessage());
} finally {
System.out.println("일단 실행하기.");
}

자바의 예외 클래스
| 예외 타입 | 예외 발생 경우 |
|---|---|
| ArithmeticException | 정수를 0으로 나눌 때 발생 |
| NullPointerException | null 레퍼런스를 참조할 때 발생 |
| ClassCastException | 변환할 수 없는 타입으로 객체를 변환할 때 발생 |
| OutOfMemoryError | 메모리가 부족할 경우 발생 |
| ArrayIndexOutOfBoundsException | 배열의 범위를 벗어난 접근 시 발생 |
| IllegalArgumentException | 잘못된 인자 전달 시 발생 |
| IOException | 입출력 동작 실패 또는 인터럽트 시 발생 |
| NumberFormatException | 문자열이 나타내는 숫자와 일치하지 않는 타입의 숫자로 변환시 발생 |
| InputMismatchException | Scanner 클래스의 nextInt()를 호출하여 정수로 입력받고자 하였지만, 사용자가 'a' 등과 같이 문자를 입력한 경우 |
2) throws
throws는 자신을 호출하는 메소드에 예외처리의 책임을 떠넘김.
public static void main(String[] args) {
int a = 12;
int b = 0;
try {
divide(a, b);
} catch (ArithmeticException e) {
System.out.println("ArithmeticException: " + e.getMessage());
}
}
public static void divide(int a, int b) throws ArithmeticException{
System.out.println("throw a/b: "+ a/b);
}

3) throw
throw는 개발자가 직접 예외를 발생시키고 싶을 때 씀.
나중에 추가할래...