JAVA
Item 70 : 회복가능한 상황에서는 checked exception 을 사용하고 프로그래밍 에러일때는 Runtime exception 을 사용하라.
backlo
2023. 1. 20. 14:51
세 가지 유형의 throwables
- checked exception
- 사용자는 반드시 catch문으로 exception을 핸들링 해야한다.
- 사용자는 exception에 대한 해결로직을 구현해야 한다.
- Exception 클래스를 상속받는다.
- unchecked throwable
- 절대 catch 하면 안 된다.
- 보통 exception 회복이 불가능하다고 판단 또는 계속되는 실행이 더 시스템에 악영향을 준다.
- runtime exception
- 결국 현재 스레드가 죽고, 에러를 출력한다.
- 주로 프로그래밍 에러를 나타내기 위해서 사용한다.(예 : ArrayIndexOutOfBounds)
- RuntimeException을 상속받는다.
- error
- error는 보통 JVM이 사용하도록 예약되어 있다.
- 보통 리소스 부족, invariant failure(불변성 실패) 등을 나타낼 때 사용된다.
- Error 클래스를 상속해서 구현해서 만들 수 있으나, 보통 새로 만들지 않는 것이 관습이다.
정리
- recoverable 한 상태이면 checked exception을 던지고, 프로그래밍 에러일 때는 unchecked exception을 던져라.
- 잘 모르겠으면, unchecked exception을 던져라
- runtime exception, checked exception이 아닌 throwable 클래스는 정의하지 마라.
- checked exception의 recovery를 돕기 위해서, 함수를 제공해라