70. 복구할 수 있는 상황에는 검사 예외를, 프로그래밍 오류에는 런타임 예외를 사용하라

신명철·2022년 4월 5일
0

Effective Java

목록 보기
66/80

검사 예외

검사 예외는 호출하는 쪽에서 복구하리라 여겨지는 상황일 때 사용해야 한다. 검사 예외를 던지면 호출자가 그 예외를 catch로 잡아 처리하거나 더 바깥으로 전파하도록 강제하게 된다. 따라서 그 메서드를 호출했을 때 발생할 수 있는 오류 상황을 API 사용자에게 알릴 수 있다.

비검사 Throwable

비검사 Throwable은 RuntimeException이랑 Error로 나뉜다. 이 둘은 통상적으로 프로그램에서 잡을 필요가 없거나 잡지 말아야 한다. 이 둘이 발생했다는 것은 복구가 불가능하거나 더 실행해봐야 실이 더 많다는 이야기기 때문이다. 이런 thorwable을 잡지 않은 스레드는 적절한 에러 메세지를 뱉으며 중지한다.

프로그래밍 오류를 나타낼 때는 Runtime Exception을 사용하자. 런타임 예외의 대부분은 전제조건을 만족하지 못했을 때 발생한다. 예를 들어 배열의 크기를 넘어가는 경우가 그 예이다.

Error는 보통 JVM의 자원 부족, 불변식 깨짐 등 더 이상 수행을 이어갈 수 없을 때 사용한다. 그렇기 떄문에 개발자가 구현하는 비검사 Throwable은 대부분 RuntimeException의 하위 클래스이다.

Exception,RuntimeException,Error를 상속하지 않는 throwable을 만들 수 는 있지만 절대 권장하지 않는다.

profile
내 머릿속 지우개

0개의 댓글