예외 처리란, 프로그램 실행 시 발생할 수 있는 예기치 못한 예외의 발생에 대비한 코드를 작성하는 것이다.
예외 처리를 통해 프로그램의 갑작스런 비정상적인 동작을 막고, 각 예외에 맞는 처리를 해서 프로그램의 정상적인 실행 상태를 유지시켜준다.
일단 예외라는 게 언제 발생하는 걸까
<예시 예외 상황>
public class SampleException {
public static void main(String[] args) {
int c;
try {
c = 4 / 0;
} catch(ArithmeticException e) {
c = -1; // 예외가 발생하여 이 문장이 수행된다.
}
System.out.println(c); // -1
}
}
결과
-1
나누는 수가 0일 경우 산술의 문제가 생기게 되는데
이를 컴퓨터에서 예외 메시지를 보내주게 된다
만약 catch문을 작성하지 않고 그냥 4 / 0 코드를 돌려보면
public class SampleException {
public static void main(String[] args) {
int c;
c = 4 / 0;
}
}
이렇게 빨간색 예외 메세지가 뜨는 것을 확인 할 수 있다
예외 메세지를 살펴보면 ArithmeticException이라고 적혀있는데
이는 산술에 문제가 생겼다는 예외 종류이다.
그래서 위의 코드에서 catch를 사용해서 ArithmeticException 에러가 생겼을 때를 예외 처리해서 c를 -1로 바꿀 수 있었던 것이다
만약 예외가 발생하지 않는다면 코드는 어떻게 작동할까
public class SampleException {
public static void main(String[] args) {
int c;
try {
c = 4 / 1;
} catch(ArithmeticException e) {
c = -1; // 예외가 발생하지 않아 catch 구문에 들어오지 않는다.
}
System.out.println(c); // 4
}
}
c = 4 / 1; 이라는 코드는 ArithmeticException 예외가 발생하지 않으므로 catch문에 들어가지 않아 4를 반환한다.
이러한 예외 처리는 try ~ catch 문이라 부르며
try 구문에는 예외발생 가능한 코드가 위치하고 만일 코드에 오류가 발생되면, 오류 종류에 맞는 catch문으로 갖서 catch 블록 안에 있는 코드를 실행시킨다.
public class SampleException {
public static void main(String[] args) {
try {
...
예외발생 가능한 코드들
...
} catch(예외종류 e) {
...
오류 발생 시 실행시킬 코드들
...
}
}
}