자바(Java) - 예외(Exception) 이란?

안녕하세요

이번 시간에는 자바에서 오류 처리를 위해 자주 쓰이는 Exception에 대해

개념과 예제를 보여드리는 시간을 가지겠습니다.


자바에서 Exception 이란?
프로그램이 진행하는 과정에서 만나게 되는 오류(가벼운 정도의 에러)입니다.

예외 관련 상속도는 아래와 같이 구성되어 있습니다.




예외 처리의 목적은 프로그램 진행시 발생할 수 있는 상황들을 미리 정해놓고, 해당하는 예외가 발생했을 경우 적절한 조치를 취해서 프로그램이 정상적으로 작동하도록 하기 위함입니다.

예외 처리의 방법은 두 가지가 있습니다.

1) Handle하는 방법: 직접 처리하는 방법 try~catch 절을 이용

-사용예-
try
{
    예외 발생 코드
}
catch(해당예외클래스 e)
{
    예외처리코드
}

2) Declare하는 방법: 선언하는 방법 throws 절을 이용
예외 처리를 직접 하지 않고 메소드를 호출하는 쪽으로 넘긴다.

-사용예-
public void sub() throws IOException{
   int r=System.in.read();
} // 위 처럼 선언하면, sub()를 호출하는 쪽으로 IOException 을 넘겨준다.

그리고 finally절이 try~catch문에서 맨 마지막에 나오는데

이것은 선택 사항입니다. finally를 넣는 다는 것은 반드시 한번은 코드를 실행해야 한다는 부분을 넣겠다는 것입니다.

[심지어 return 문이 오더라도 finally블럭은 반드시 실행되며,
단 System.exit(0)의 경우는 실행되지 않고 종료됩니다.]

자 그럼 예를 한번 볼까요~

public class ExceptionTest5 {
 public static void main(String[] args) {
  try{
   int num2=Integer.parseInt(JOptionPane.showInputDialog("숫자 입력하세요");
   System.out.println("입력하세요=>");
   String a= "나무";
   int num=System.in.read()-48;
   int num3=50/(num*num2);
   System.out.println("num : "+num);
   System.out.println("num2 : "+num2);
   System.out.println("num3 : "+num3);
  }catch(NumberFormatException e){
   System.out.println("숫자를 입력하세요");
   return; // return문이 오면 반드시 실행돼야 할 코드가 안 옴->finally 문장을 추가
  }catch(ArithmeticException e){
   System.out.println("분모가 0이 되면 안됩니다");
   System.exit(0);//시스템 종료
  }catch(java.io.IOException e){
   System.out.println("입출력 오류 발생");
  }catch(Exception e){
   System.out.println("기타 오류");
  }finally{
   System.out.println(":::반드시 실행돼야 할 코드:::");
  }
  System.out.println("***The End***************");
}



실행 결과는 아래와 같습니다.

정상적인 상황

ArithmeticException 발생


NumberFormatException 발생



댓글 없음:

댓글 쓰기