자바의 세가지 종류의 'throwable'
· 점검 지정 예외(checked exception)
ㄴ 반드시 처리해야하며 컴파일 시점에 확인된다.
ㄴ ex) exception의 상속 받는 하위 클래스 중 Runtime Exception을 제외한 모든 예외
· 실행 시점 예외(runtime exception)
ㄴ 명시적으로 처리하지 않아도 되며 런타임 시점에 확인된다.
ㄴ ex) runtime exception 하위 예외
· 오류(error)
점검지정 예외 언제 사용해야 하나?
· 호출자(caller)측에서 복구할 것으로 여겨지는 상황에 대해서는 점검지정 예외를 이용해야 한다.
· 점검 지정 예외를 던지는 곳은 해당 예외를 catch절에서 처리
무점검 예외와 실행시점예외는 오류 두가지가 있다.
· 둘다 catch로 처리할 필요가 없으며 일반적으로 처리해서도 안된다.
· 프로그램이 무점검 예외나 오류를 던진다는것은 일반적으로 복구가 불가능한 상황에 직면한 것.
ㄴ throwable을 catch하지 않는 스레드는 적절한 오류 메세지를 내면서 halt한다.
프로그래밍 오류를 표현할 때에는 실행시점 예외를 사용하라.
· 클라이언트가 API명세에 기술된 규약을 지키지 않았을 때를 나타냄
· 배열이 0, -1길이가 존재할때 위반되면 ArrayIndexOutOfBoundsException
사용자 정의 무점검 throwable은 RuntimeException의 하위 클래스로 만들어야 한다.
메모리가 바닥났을 경우에는 무슨 예외 처리를 해야 하나?
· 복구 가능하다면 점검 지정 예외 처리
· 아니면 실행 시점 예외, 잘 모르겠으면 무점검 예외
결론
· 복구 가능한 상태에서는 점검지정 예외를 사용하고 프로그래밍 오류를 나타내고 싶을 때는 실행 시점 예외 처리한다.
'IT > Programming' 카테고리의 다른 글
<Effective Java> RULE 56 일반적으로 통용되는 작명 관습을 따르라 (0) | 2023.04.26 |
---|---|
<Effective Java> RULE 57 예외는 예외적 상황에만 사용하라 (0) | 2023.04.26 |
<Effective Java> RULE 59 불필요한 점검지정 예외 사용은 피하라 (0) | 2023.04.26 |
<Effective Java> RULE 60 표준 예외를 사용하라 (0) | 2023.04.26 |
<Effective Java> RULE 61 추상화 수준에 맞는 예외를 던져라 (0) | 2023.04.26 |