프로그램이 동작 중에 발생하는 오류는 런타임오류(Run-time Error)라고 한다
런타임 오류가 발생하는 것을 막기위해 적당한 안전장치를 구현하는데, 이를 예외처리라고 한다
적절히 예외처리를 구현한 프로그램은 안정성을 높이고 프로그램의 신뢰도를 높인다
try-catch문은 switch-case문 처럼 세트로 사용되는 문법으로, try 단독으로 혹은 catch 단독으로 사용할 수 없다.
public class Main {
public static void main(String[] args) {
int [] Arr = new int[3];
for(int j = 0 ; j < 4 ; j++) {
Arr[j] = j;
}
}
}
프로그램 실행 시 오류가 발생한다.
5번째 줄에서 Arr의 0부터 2까지 메모리에 할당했지만, 7번째 줄 for문은 배열의 0부터 3까지 접근하기 때문이다.
ArrayIndexOutOfBoundsException은 배열의 크기보다 더 크거나 작은 위치를 접근하고자 할때 발생하는 Exception이다.
public class Main {
public static void main(String[] args) {
int [] Arr = new int[3];
try {
for(int j = 0 ; j < 4 ; j++) {
Arr[j] = j;
}
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Exception!!!");
}
}
}
try문 안에 있는 소스코드는 해당 부분에서 런타임 오류가 발생할 시 프로그램이 바로 종료되는 것이 아니라 catch문으로 넘어가게 된다. catch문에 있는 exception 클래스가 try문 내에서 발생하는 exception과 일치해야한다.
Exception은 try-catch문에서 사용되는 클래스다
데이터 입 출력시 발생할 수 있는 오류의 경우 IOException
수학 연산시 발생할 수 있는 오류의 경우 ArithmeticException이 발생한다
자세한건 api 참고
https://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html