Java Exception
Exception
Guide
예외는 진짜 예외 상황에서만 사용
-
예외는 ( 그 이름이 말해주 듯 ) 오직 예외 상황에서만 사용, 절대로 일상적인 제어 흐름용으로 사용해서는 안됨
-
잘 설계된 API 라면 클라이언트가 정상적인 제어 흐름에서 예외를 사용할 일이 없게 해야
- 외부 동기화 없이 여러 스레드가 동시에 접근할 수 있거나 외부 요인으로 상태가 변할 수 있다면 옵셔널이나 특정 값을 사용 (상태 검사 메서드와 상태 의존적 메서드 호출 사이에 객체가 변할 수 있기 때문)
- 성능이 중요한 상황에서 상태 검사 메서드가 상태 의존적 메소드의 작업일부를 중복 수행한다면 옵셔널이나 특정 값을 선택
- 다른 모든 경우엔 상태 검사 메서드 방식이 조금 더 낫다. 가독성이 살짝 더 좋고, 잘못 사용했을 때 발견하기 쉽다. 상태 검사 메서드 호출을 깜빡 잊었다면 상태 의존적 메서드가 예외를 던져 버그를 확실히 드러낼 것 반면 특정 값은 검사하지 않고 지나쳐도 발견하기가 어렵다. ( 옵셔널에 해당하지 않음 )
복구할 수 있는 상황에는 검사 예외를, 프로그래밍 오류에는 런타임 예외를 사용
자바는 문제 상황을 알리는 (throwable)으로 다음과 같이 3가지를 제공
- 검사예외
- 호출하는 쪽에서 복구하리라 여겨지는 상황이라면 검사 예외를 사용
- 런타임예외
- 프로그래밍 오류를 나타낼 때는 런타임 예외
- 에러
검사예외와 비검사예외 ?
- 검사예외
- 비검사예외
필요없는 검사예외 사용은 피하라