메서드와 생성자의 입력 매개변수의 값이 특정 조건을 만족하기를 바랄 수 있다.
이런 제약은 반드시 문서화 해야 하며, 메서드 몸체가 시작되기 전에 검사해야 한다. “오류는 가능한 한 빨리 (발생한 곳에서) 잡아야 한다.”
public과 protected 메서드는 매개변수 값이 잘못됐을 때 던지는 예외를 문서화해야 한다. (@throws 자바독 태그)
클래스 수준 주석은 클래스의 모든 public 메서드에 적용된다.
Objects.requireNonNull(object, String)
public class RequireNonNullExample {
public static void main(String[] args) {
doWork("keesun");
}
public static void doWork(String name) {
requireNonNull(name, "The name cannot be null");
String value = null;
try {
// This will throw a NullPointerException with the specified message
requireNonNull(value, "The value cannot be null");
} catch (NullPointerException e) {
System.out.println(e.getMessage());
}
value = "Hello, World!";
// This will not throw an exception
String result = requireNonNull(value, "The value cannot be null");
System.out.println(result);
}
}
public이 아닌 메서드라면 단언문(assert)을 사용해 매개변수 유효성을 검증할 수 있 다
public class AssertExample {
public static void main(String[] args) {
doPrivate(5);
doPrivate(-5);
}
private static void doPrivate(int value) {
assert value > 0 : "Value should be greater than 0";
}
}
- 위의 방법보다는 아래의 방법을 선호한다. - 검증 로직을 추가하자.
if(){
throw new IllegalException("Value .. ");
}