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

상태패턴을 이용해서 체스게임을 구현했는데, 해당 피드백을 받았다. 지금까지 미션을 하면서 무지성으로 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을 쓰는 것이 적절하다.

좋은 웹페이지 즐겨찾기