Categories: Java 언어Korean

Java 총 정리[87. 예외 처리]

예외 처리

이전 걸음에서는 파일 입출력에 대해서 같이 공부를 했습니다. 이번에는 Java를 공부하면 꼭 알아두어야 할 내용을 같이 공부를 하려고 합니다. 오늘 내용은 실행이나 동작에 영향을 주기 보다는 프로그램 소스의 질을 향상을 시키고 문제 해결에 도움이 될 수 있습니다.

예외 처리에 대해서 이번 걸음에서 같이 보도록 하겠습니다. 예외 처리는 문제가 발생하지 않는 프로그램 소스라면 필요가 없지만 사람이 개발을 하면 기능에 문제가 발생을 할 수 있습니다. 그때 예외 처리를 사용을 하면 프로그램의 소스의 질이 향상이 될 수 있습니다. 

예외 처리가 무엇 인지와 예외 처리를 사용하는 방법을 이번 걸음에서 같이 함께 이야기 할 예정입니다. 또한 예외 처리의 예제 소스를 통해서 직접 확인을 하고 결과에 대해서 공부를 할 예정입니다. 이번 걸음을 통해서 예외 처리에 대해서 완벽하게 이해를 하실 수 있습니다.

예외 처리란?

예외 처리는 프로그램 기능을 동작을 할 때 문제가 생기면 그 문제를 처리해주는 방법이나 명령을 지정 함으로써 문제를 처리 할 수 있게 됩니다. 이렇게 미리 생길 문제를 미리 정리와 분기 또는 방법을 선언을 한다면 추후에 진짜 문제가 생기게 되면 문제의 해결이 빨라지게 됩니다.

예외 처리 사용 방법

예외를 처리를 하는 방식에는 2가지 방법이 있습니다.

  1. try ~ catch

try~catch 방식은 우선 try에 시도할 명령문을 넣어서 실행을 하고 그 명령을 실행을 할 때 문제가 생기는 것에 대해서 catch로 정의를 함으로써 문제가 생기는 예외에 대한 처리를 미리 해두면 됩니다.

try{

     동작할 명령어

}catch(예외처리 클래스){

     예외처리 발생시 동작할 로직

}

catch(예외처리 클래스){

     예외처리 발생시 동작할 로직

}

finally{

최종적으로 불리는 명령어

}

예외처리 클래스는 미리 자바에서 Exception이 있고 그 Exception을 상속을 받는 특정 예외 class를 넣어주면 됩니다.

※ catch로 끝낼 수도 있지만 마지막 무조건 호출을 해야 할 명령문이 있다면 try~catch의 제일 하단에 finally을 넣어서 사용을 하면 됩니다.

2. throws

throws는 예외 상황에 대해 어떻게 동작을 할지 정의를 하지 않고 Method 선언 부에 Exception class 또는 그 자식 class를 넣어 줌으로써 그 Method에서 예외가 발생하면 예외의 기본적인 내용이 호출되고 종료가 되도록 합니다.

예)int main(String[] args) throws IOException 이와 같이 정의를 하게 됩니다.

예외 처리 예제

    
public class ExceptionTest1 {

 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Scanner sc = new Scanner(System.in);
  int num = 0;
  int flag = 0;
  while(flag == 0) {
   flag = 1;
   try {
    System.out.print("숫자 입력 = ");
    num = sc.nextInt();
    System.out.println("입력 받은 숫자는 = "+num);
   }
   catch(InputMismatchException e) {
    flag = 0;
    sc.nextLine();
    System.out.println("정상적인 숫자를 입력하세요.");
   }
  }
 }

}
    

위 예제와 같이 try~catch를 사용을 하면 숫자만 입력을 원할 때 유용하게 사용을 할 수 있습니다. 문자가 입력이 되면 계속 다시 입력을 유도해서 숫자 입력을 할 때까지 동작을 하게 됩니다. try~catch의 사용한 예제 소스를 참고를 해주세요.

    
import java.io.FileReader;

public class ExceptionTest2 {

 public static void main(String[] args) throws Exception {
  // TODO Auto-generated method stub
  FileReader file= new FileReader("a.txt");
  int i;
  while((i = file.read()) != -1) {
   System.out.print((char) i);
  }
  file.close();
 }

}
    

위의 예제를 보면 throws를 사용하여 예외에 대한 처리를 하고 프로그램을 실행을 하면 파일이 존재하지 않기 때문에 에러가 발생하고 프로그램이 종료가 되게 됩니다.

Dolphin

Recent Posts

Java 총정리[97. Java GUI]

Java GUI Java GUI에 대해서 이번 걸음에서 배움으로써 GUI에 전반적인 지식과 Java GUI를 구현하는 방법…

7개월 ago

Java 총정리[96. Java TCP 통신 프로그램 구현]

Java TCP 통신 프로그램 구현 Java TCP 통신 프로그램 구현을 위해서 이전 걸음에서 쓰레드에 대한…

7개월 ago

Java 총정리[95.쓰레드 통신]

쓰레드 통신 이전 걸음에서 쓰레드의 임계영역에 대해서 같이 공부를 했습니다. 동기화에 대한 개념을 계속적으로 하고…

7개월 ago

Java 총 정리[94. 쓰레드 임계영역]

쓰레드 임계영역 이전 걸음에서 쓰레드의 동기화에 대해서 같이 공부를 했습니다. 동기화에 대한 전반적인 내용을 공부하고…

8개월 ago

Java 총 정리[93. 쓰레드 동기화]

쓰레드 동기화 이전 걸음에서 계속 쓰레드에 대해서 공부를 하고 있습니다. 쓰레드는 상당히 중요한 개념이기 때문에…

8개월 ago

Java 총 정리[92. 쓰레드 join()]

쓰레드 join() 이전 걸음에서 쓰레드의 전반적인 실행 흐름에 대해서 공부를 했습니다. 이제 배운 실행 흐름…

8개월 ago

This website uses cookies.