Exception 클래스
자바에서 모든 예외의 조상 클래스가 되는 Exception 클래스는 크게 다음과 같이 구분할 수 있습니다.
- RuntimeException 클래스
- 그 외의 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으로 나누는 등 연산을 수행할 수 없는 경우 |
'Java > Exception' 카테고리의 다른 글
예외 발생 및 회피 (0) | 2020.07.02 |
---|---|
예외 처리 (0) | 2020.07.02 |