예외 클래스의 계층 관계
Throwable
예외 클래스의 최상위 클래스
|
|- Error
프로그램 회복을 기대하지 않는 치명적인 예외
| - IOError, NoClassDefFoundError, OutOfMemoryError 등
|- Exception
프로그램 회복을 기대하는 예외
| - IOException, ConnectException 등
L `RuntimeException` 비검사 예외 클래스 : 검사하든 검사하지 않든 상관없다.
Throwable 클래스
예외 클래스의 정점에 위치한 클래스. 자바의 모든 예외 클래스는 이 클래스의 하위 클래스로 다음의 규칙을 가진다.
- catch절의 변수 선언시 Throwable의 하위 클래스가 아닌 절을 지정하면 컴파일 오류가 발생한다.
- 예외 클래스를 직접 만들 때에는 Throwable의 하위 클래스로 만들어야 한다.
Error 클래스
프로그램이 회복될 수 없는 치명적인 예외이다. 오류를 캐치할 수 없거나, 캐치한다 하더라도 대처가 불가능하다.
Exception 클래스
프로그램 회복을 기대하는 클래스로, Exception 클래스의 하위 클래스는 기본적으로 검사 예외
클래스이다.
단, RuntimeException
클래스와 그 하위 클래스는 비검사예외
가 된다.
검사 예외
대처가 필수인 클래스로, 컴파일시 프로그램에 대처 여부를 검사한다.
- 검사 예외를 던질 가능성이 있는 코드는 try문 안에 두어 예외를 캐치한다.
- 메서드나 생성자의 선언에서 던질 가능성이 있는 예외를 throw절로 명시한다.
비검사예외
대처가 필수는 아닌 예외이다. 캐치나 대처를 하지 않아도 컴파일 오류가 발생하지 않는다.
- 비검사 예외를 던질 가능성이 있는 코드를 try문안에 두지 않아도 된다.
- 비검사 예외를 던질 가능성이 있는 메서드나 생성자는 throw절에 명시하지 않아도 된다.
Throwable 클래스의 생성자
- Throwable()
상세 메세지를 null로 설정한 예외 객체 생성 - Throwable(String message)
상세 메세지를 message에 설정한 예외 생성 - Throwable(String message, Throwable cause)
상세 메세지를 message에 설정하고 원인을 cause에 설정한 예외 구축 - Throwable(Throwable cause)
상세메세지를 cause가 null이면 null로, 그렇지 않으면 cause.toString()으로 설정할 수 있는 예외 구축
Throw 클래스의 주요 메서드
- String getMessage() : 상세 메세지를 반환한다.
- Throwable getLocalizedMessage() : 본 메서드를 오버라이드하면 로컬 메세지를 작성할 수 있다. 오버라이드하지 않으면 getMessage와 같은 문자열을 반환한다.
- Throwable getCause() : 원인을 반환한다. 원인이 존재하지 않거나 불명확할 때는 null을 리턴한다.
- Throwable initCause(Throwable cause) : 원인을 설정한다. 이 메서드는 1회만 호출할 수 있다. 생성자 3과 4의 내부에서 자동으로 호출되어 이 생성자들을 생성한 경우, 1회도 호출할 수 없다.
- String toString() : 짧은 문자열을 반환한다 - 객체의 클래스명: getLocalizedMessage 메소드의 결과값
- void printStackTrace() : 객체와 그 backTrace를 표준 오류 Stream에 출력한다. 첫 번째 줄에는 toString의 결과값이, 그 다음 줄에는 fillInStackTrace를 기록한 데이터를 표시한다.
- void printStackTrace(PrintStream s) : 객체와 그 백트레이스를 스트림 s에 출력한다.
- Throwable fillInStackTrace() : 현재 스래드가 가진 스택 프레임의 현재 상태와 관련된 정보를 객체 내에 기록한다. 단, 스택 트레이스를 기록할 수 없는 경우에는 아무런 처리도 발생하지 않는다.
- StackTraceElement[] getStackTrace() : printStackTrace에 의해 출력되는 스택 트레이스를 개별 요소로 지니는 배열을 반환한다.
- void setStackTrace(StackTraceElement[] stacktrace) : getStackTrace에 의해 반환되며 printStackTrace 및 관련 메서드에 의해 출력될 스택 트레이스 요소를 설정한다.
'Java > Java 기초' 카테고리의 다른 글
Java33 예외를 다른 메소드에 넘기기 (0) | 2020.06.18 |
---|---|
Java32 Exception 클래스와 RuntimeException 클래스 (0) | 2020.06.15 |
Java30 오류 처리와 try-catch-finally 구문 (0) | 2020.06.10 |
Java29 String.equals, compareTo, String.format메서드 (0) | 2020.06.09 |
Java28 String. intern, length, charAt, indexOf (0) | 2020.06.08 |