본문 바로가기
Java/Exception

예외 클래스

by Backchus 2020. 7. 2.

Exception 클래스

자바에서 모든 예외의 조상 클래스가 되는 Exception 클래스는 크게 다음과 같이 구분할 수 있습니다.

  1. RuntimeException 클래스
  2. 그 외의 Exception 클래스의 자식 클래스

RuntimeException 클래스를 상속받는 자식 클래스들은 주로 치명적인 예외 상황을 발생시키지 않는 예외들로 구성됩니다.
따라서 try / catch 문을 사용하기보다느 프로그램을 작성하면서 예외가 발생하지 않도록 주의를 기울이는 편이 좋습니다.

하지만 그 외의 Exception 클래스에 속하는 자식 클래스들은 치명적인 예외 상황을 발생시키므로, 반드시 try / catch 문을 사용하여 예외를 처리해야만 합니다.

다음 예제는 PrintStream 클래스의 write() 메소드를 사용하여 byte 타입 배열의 모든 요소를 출력하는 예제입니다.

public class Exception01 {

    public static void main(String[] args) {

        byte[] list = {'a', 'b', 'c'};

        System.out.write(list);

    }

}

하지만 위의 예제에서는 write() 메소드에서 발생할 수 있는 IOException에 대한 예외를 처리하지 않았으므로, 컴파일 시 오류가 발생합니다.


따라서 다음 예제와 같이 try / catch 문을 사용하여 IOException에 대한 예외 처리까지 해 주어야만 컴파일 할 수 있습니다.

byte[] list = {'a', 'b', 'c'};



try {

    System.out.write(list);

} catch (IOException e) {

    e.printStackTrace();

}

Throwable 클래스

자바에서 Throwable 클래스는 모든 예외의 조상이 되는 Exception 클래스와 모든 오류의 조상이 되는 Error 클래스의 부모 클래스입니다.

Throwable 타입과 이 클래스를 상속받은 서브 타입만이 자바 가상 머신(JVM)이나 throw 키워드에 의해 던져질 수 있습니다.

이 클래스에는 예외나 오류에 관한 다양한 정보를 확인할 수 있는 다음과 같은 메소드가 포함되어 있습니다.

클래스스 설명
String getMessage() 해당 throwable 객체에 대한 자세한 내용을 문자열로 반환함.
void printStackTrace() 해당 throwable 객체와 표준 오류 스트림(standard error stream)에서 해당 객체의 스택 트레이스(stack trace)를 출력함.
String toString() 해당 throwable 객체에 대한 간략한 내용을 문자열로 반환함.

다음 예제는 일부러 숫자를 0으로 나눠 ArithmeticException 오류를 발생시키는 예제입니다.

이렇게 발생한 오류에 대해 Throwable 메소드를 사용하여 발생한 오류에 대한 정보를 출력합니다.

try {

    System.out.println(5 / 0);

} catch (ArithmeticException e) {

    System.out.println("현재 발생한 예외 정보 : " + e.getMessage());

}

실행결과

현재 발생한 예외 정보 : / by zero

자주 사용되는 예외 클래스

자바에서 자주 사용되는 예외 클래스는 다음과 같습니다.

클래스 설명명
ClassCastException 수행할 수 없는 타입 변환이 진행될 경우
ArrayIndexOutOfBoundsException 배열에 잘못된 인덱스를 사용하여 접근할 경우
NullPointerException null 객체의 인스턴스 메소드를 호출하는 등의 경우
ArithmeticException 산술 연산에서 정수를 0으로 나누는 등 연산을 수행할 수 없는 경우

참고자료: http://tcpschool.com/java/java_exception_class

'Java > Exception' 카테고리의 다른 글

예외 발생 및 회피  (0) 2020.07.02
예외 처리  (0) 2020.07.02