[java] JSR 305을 활용한 자바 코드 예외 처리 디자인 방법

개요

예외 처리는 소프트웨어 개발에서 중요한 부분이며, 예외 처리가 제대로 이루어지지 않으면 애플리케이션의 안정성과 신뢰성이 크게 저하될 수 있습니다. 이에 따라 자바에서는 예외 처리를 위한 다양한 기능과 라이브러리가 제공되고 있습니다. JSR 305은 자바 언어와 관련된 어노테이션을 정의하여, 예외 처리에 대한 디자인 패턴을 개선해줍니다.

JSR 305이란?

JSR 305는 “주석으로서의 어노테이션”이라는 제목으로 제안된 자바 스펙입니다. 이 스펙은 주석을 통해 문서화하고 도구에 의해 검사되도록 하는 어노테이션을 제공합니다. 이 중에서도 예외 처리와 관련된 기능은 개발자가 예외 처리 코드를 작성하면서 일관성을 확보하고, 오류를 사전에 방지할 수 있도록 도와줍니다.

@Nonnull 어노테이션

@Nonnull은 메서드의 파라미터, 반환 값 또는 필드에 붙여서 null 값이 들어오면 오류를 발생시키도록 하는 어노테이션입니다. 이를 사용하여 메서드의 파라미터가 null 이 아니라는 것을 명시적으로 표현할 수 있습니다. 이렇게 하면 null 값에 의한 예외 상황을 사전에 방지할 수 있습니다.

public void setName(@Nonnull String name) {
  // 이름을 저장하는 로직
}

@Nullable 어노테이션

@Nullable은 메서드의 파라미터, 반환 값 또는 필드에 붙여서 null 값이 허용된다는 것을 나타내는 어노테이션입니다. 이를 사용하여 메서드의 반환 값이 null 일 수 있음을 명시적으로 표현할 수 있습니다. 이렇게 하면 null 값을 반환하는 메서드를 사용하는 코드에서 null 체크를 강제할 수 있습니다.

@Nullable
public String getName() {
  // 이름을 반환하는 로직
  // 반환 값이 null일 수 있음
}

@CheckReturnValue 어노테이션

@CheckReturnValue은 메서드의 반환 값이 무시되지 않도록 경고해주는 어노테이션입니다. 이를 사용하여 반환 값이 사용되지 않는 상황에 대해 컴파일러가 경고를 발생시킬 수 있습니다. 이를 통해 개발자가 반환 값을 무시하지 않고 적절히 처리하도록 유도할 수 있습니다.

@CheckReturnValue
public int performCalculation() {
  // 계산 로직
  // 결과 값이 반환됨
}

결론

JSR 305은 자바 코드에서 예외 처리를 제대로 이용하기 위한 디자인 패턴을 제시하는 유용한 도구입니다. @Nonnull, @Nullable, @CheckReturnValue 등의 어노테이션을 활용하여 null 예외를 미리 예방하고 반환 값을 적절히 처리하는 등의 예외 처리 디자인이 개선될 수 있습니다. 따라서 개발자들은 JSR 305의 어노테이션을 적극적으로 활용하여 코드의 안정성과 신뢰성을 높일 수 있습니다.

참고 자료