아이템72. 표준 예외를 사용하라

Hyunta·2022년 4월 1일
0

이펙티브 자바

목록 보기
3/3

상태패턴을 이용해서 체스게임을 구현했는데, 해당 피드백을 받았다. 지금까지 미션을 하면서 무지성으로 IllegalArgumentException을 던졌었는데, 이번 기회에 공부를 해봤다.

표준 예외

숙련된 프로그래머는 그렇지 못한 프로그래머보다 더 많은 코드를 재사용한다. 예외도 마찬가지로 재사용하는 것이 좋다.
대표적으로 재사용되는 예외는 아래와 같다.

예외주요쓰임
IllegalArgumentException허용하지 않는 값이 인수로 건네졌을 때
IllegalStatementException객체가 메서드를 수행하기에 적절하지 않은 상태일 때
NullPointerExceptionnull을 허용하지 않는 메서드에 null을 건넸을 때
IndexOutOfBoundsException인덱스가 범위를 넘어섰을 때
ConcurrentModificationException허용하지 않는 동시 수정이 발견됐을 때
UnsupportedOperationException호출한 메서드를 지원하지 않을 때

왠만한 상황에서는 표준예외가 정의되어있느니 재사용하는 것을 추천한다.

Exception, RuntimeException, Throwable,Error 는 직접 재사용하지말고, 추상 클래스라고 생각하길 바란다.

정리

public class End implements State {

    @Override
    public State start() {
        throw new IllegalStateException("[ERROR] 게임이 이미 종료되었습니다.");
    }

End 상태일 경우 start를 호출하지 못하는 이유는 허용되지 않는 값이 인수로 건네져서가 아니라 객체가 메서드를 수행하기에 적절하지 않은 상태이기 때문에 IllegalStateException을 쓰는 것이 적절하다.

profile
세상을 아름답게!

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN