@enum
- 상수인데 메서드를 가질 수 있다
- 반복되는 상수, if문 -> enum
- 싱글톤 패턴
public enum FontStyle {
NORMAL, BOLD, ITALIC, UNDERLINE;
FontStyle() {
}
}
@Exception
- 발생할거로 예상되는 예외를 catch 해야 함
1) checked exception
Exception
- 컴파일 시점에 처리(try/catch)를 하지 않을 경우 컴파일 에러가 발생한다.
- 핸들링을 해야 함 : throws 예약어를 활용해 Exception을 호출 메소드에 전달할 수도 있음
- 최신 언어에선 잘 사용 X
public class Position {
public Position(String position) throws InvalidPositionException {
if (position.length() != 2) {
throw new InvalidPositionException(position + "은 위치 값 형식에 맞지 않습니다.");
}
x = (int) (position.charAt(0) - 'a');
y = Integer.parseInt(position.substring(1)) - 1;
}
}
2) unchecked exception
RuntimeException
- 컴파일 시점에 예외를
catch
하는지 확인하지 않는다.
- 핸들링 X
3) 예외처리법
- 복구
Exception
발생 시 이를 예측하여 다른 비즈니스 로직 흐름으로 유도
- 예외가 발생하지 않는 상황으로 복구 로직 추가
- 회피
- throws...예외를 상위로 던져버림
- 웬만해선 X
- 전환
- 다른
Exception
으로 전환
- 어떤 예외인지 더욱 분명히 할 수 있음
- 무시
4) 표준 예외 vs 커스텀 예외
- 표준 예외
- 자바에는 이미 다양한 표준예외가 존재
- 기본적인 건 표준예외를 사용하자(소통이 더 편함)
- 커스텀 예외
- 관리할 클래스가 많아진다
- 예외 관련 구체적 로직이 있는 경우엔 커스텀 예외 사용도 좋다
5) printStackTrace vs println
printStackTrace
- 예외 발생 경로까지 추적 가능
- 예상못한 예외상황에서 사용
println(e.getMessage())
- 커스텀예외나 예측가능한 예외상황
- 예외 메세지만 출력
6) finally
- 예외가 발생하더라도 반드시 실행
return
이 있을 시 finally
값이 리턴됨
- 끈질기게 실행된다... 쓰지 않는편이 좋다?
참고자료
교육자료-enum
교육자료-exception