프로그램을 만들다 보면 수없이 많은 예외 상황이 발생한다. 물론 예외가 발생하는 것은 프로그램이 오동작을 하지 않게 하기 위한 자바의 배려이다. 하지만 이러한 예외 상황을 무시하고 싶을 때도 있고, 적절한 처리를 하고 싶을 때도 있다. 예외 처리 방법을 알게 되면 보다 안전하고 유연한 프로그래밍을 구사할 수 있다.
예외 처리를 사용함으로서 안정적인 실행을 할 수 있다. 프로그램이 중단되지 않고 계속 실행될 수 있게 하며 적절한 메시지를 제공하여 사용자, 개발자가 문제를 파악하고 대처할 수 있기에 필수적이다.!
자바에서 예외 처리는 주로 try-catch-finally 블록을 사용하여 구현됨
int [] arr = {1,2,3};
try{
System.out.println(arr[3]);
} catch(ArrayIndexOutOfBoundsException e){
// ArrayIndexOutOfBoundsException는 타입이고 e는 변수명임
System.out.println(arr[0]);
}
System.out.println("예외 처리 성공");
배열을 이용하면 존재하지 않은 배열의 인덱스를 호출할 경우 에러갈 발생하여 프로그램이 꺼지게 되는데, try catch를 이용하여 예외처리를 할 경우 try 안에 있는 블록은 실행되지 않고 catch문을 실행시킨 뒤 프로그램이 꺼지지 않고 계속 실행 됨.
int [] arr = {1,2,3};
try{
int result = 10/0;
System.out.println(arr[3]);
} catch(ArrayIndexOutOfBoundsException e){
// System.out.println(arr[0]);
System.out.println(e.toString());
System.out.println(e.getMessage());
} catch (ArithmeticException e){
System.out.println(e);
// e는 toString이 오버라이딩 되어 있음
System.out.println(e.toString());
System.out.println(e.getMessage());
}
System.out.println("예외 처리 성공");
에러가 여러 개 있을 경우에는 catch문을 중복으로 작성할 수 있음
만약 에러 문구를 그대로 띄운 상태에서 코드를 실행시키려고 할 경우
int [] arr = {1,2,3};
try{
int result = 10/0;
System.out.println(arr[3]);
} catch (Exception e){
e.printStackTrace();
}
System.out.println("예외 처리 성공");

위 이미지 처럼 오류 메세지가 그대로 나온 뒤에 그 다음 코드를 실행됨을 볼 수 있음