본문 바로가기

Runtime

(2)
아무 관심 없던 @Retention 어노테이션 정리(RetentionPolicy SOURCE vs CLASS vs RUNTIME) @Retention annotation 관심 갖게 된 이유 자바에서 지향하는 방법은 아니지만 필요에 의해서 커스텀 애노테이션(Annotation)을 만들어야 할 때가 있습니다. 보통 예제 샘플 코드를 보면 메타 애노테이션으로 항상 붙어있고 RetentionPolicy=RUNTIME으로 되어습니다. 그렇기 때문에 그럴 때나 보게되는 애노테이션이라 @Retention 은 무시하고 @Target 정도만 확인하고 써왔습니다. 명확히는 @Retention 이라는 애노테이션이 있는지도 모르고 있었습니다. 그러던 중 회사 코드에서 JPA 엔티티(Entity) 클래스의 필드에 롬복(lombok)의 @NonNull 이 쓰인 것을 확인하고 이게 동작하는지가 궁금해지면서 찾아보게 되었습니다. 설명을 읽어보면 @Retenti..
예외 (Exception) 예외 (Exception) 메서드가 해야 할 일을 수행할 수 없는 상황에 부딪혔을 때 예외 처리를 해줘야 한다.자바는 오류 코드를 전파할 때 메서드 호출 연쇄를 사용하지 않는다.* 적절한 예외 클래스를 고른다. (그냥 Exception 클래스를 잡는건 반드시 피할 것)모든 예외는 Throwable 클래스의 서브클래스다. **비검사 예외는 RuntimeException의 서브클래스다.다른 예외는 모두 검사 예외다. * 개발자는 반드시 검사예외를 잡아내야 한다.비검사 예외는 개발자가 만든 논리 오류를 나타낸다.NullPointerException은 검사 대상이 아니다. 거의 모든 메서드가 NullPointerException을 던질 수 있기 때문이다.따라서 NullPointerException을 잡기보다 n..