시작하며
여러분 안녕하세요!
DreamHanks의 254cm입니다.
이번에는 예외 처리에 대해서 설명해드리겠습니다.
Java의 전체 기사는 여기를 클릭해 주세요.
이전 기사는 [Java 개발] 제19회 예외처리 (Exception Handling)에 대해서 배워봤습니다.
Exception 클래스
Exception 클래스는 프로그램 운영 중 발생하는 예외를 다루기 위한 클래스입니다.
Exception 클래스 종류
모든 예외 클래스의 조상 클래스가 되는 Exception 클래스는 크게 두 가지 종류로 나눌 수 있습니다.
①Runtime Exception 클래스
Runtime Exception 클래스를 상속하는 클래스는 주로 치명적인 예외가 아닙니다.
Runtime Exception 클래스를 상속받는 예외는 프로그램 작성 시 주의해서 생성해야 예외 발생을 예방할 수 있습니다.
②Runtime Exception 외 Exception 클래스의 아이 클래스
Runtime Exception 이외의 예외는 치명적인 예외이므로 반드시 try/catch 문에서 예외 처리를 해야 합니다.
따라서 java의 컴파일러는 이러한 예외가 발생할 가능성이 있는 소스코드에 예외를 처리하도록 강제하고 있습니다.
〇Exception 클래스 관계도
예외 처리의 강제
위 소스 코드의 write() 메서드는 IOException이 발생할 수 있습니다.
그래서 Java의 컴파일러는 위 write메서드에 문제를 표시하고 있습니다.
상기와 같이 try/catch문으로 둘러싸면 컴파일러가 문제를 표시하지 않습니다.
예외 처리의 계층 관계
위와 같이 catch 블록을 만들면 IOException은 Exception의 아이 클래스이기 때문에
IOException도 Exception 클래스에서 처리 할 수 있습니다.
즉, write메서드에서 발생하는 예외는 모두 e1로 처리되기 때문에 e2까지 처리가 도달할 수 없습니다.
아래와 같이 수정하면
IOException은 e2로 처리되며 이외의 예외는 e1으로 처리됩니다.
위와 같이 예외처리는 예외클래스의 상속관계에 맞게 작성해야 합니다.
여러 예외를 동시에 처리
Java SE 7부터는 위와 같이 하면 몇가지 예외를 한꺼번에 처리할 수 있습니다.
자작 예외 클래스
예외 발생
자바에서는 강제로 예외를 발생하고자 하는 경우 throw 키워드로 예외를 발생시킬 수 있습니다.
throw 사용법
throw 키워드를 사용하면 예외가 발생됩니다.
발생한 예외에 대하여 예외처리를 하지 않으므로 java 컴파일러가 문제를 표시하고 있습니다.
throws
throws 는 예외 처리를 호출한 원래의 메서드에 위임하는 키워드입니다.
샘플
위와 같이 예외처리를 하면 예외처리는 예외가 발생한 메서드에서만 처리할 수 있습니다.
즉, exception Sample 메서드의 try/catch를 지우면 컴파일러가 문제를 표시합니다.
이러한 예외 처리를 메소드의 호출원(이번에는 main메소드)에서 하고 싶을 때는 아래와 같이 작성하시면 됩니다.
위와 같이 작성하면 예외가 발생하는 메서드가 호출되는 원래 예외처리 할 수 있습니다.
끝으로
이번 기사는 이상입니다.
다음 시간에는 파일 입력 및 출력을 배워보겠습니다.
방문해 주셔서 감사합니다.
コメント