나는 예외를 사용하여 문제를 조기에 포착합니다. 예를 들면 다음과 같습니다.
public int getAverageAge(Person p1, Person p2){
if(p1 == null || p2 == null)
throw new IllegalArgumentException("One or more of input persons is null").
return (p1.getAge() + p2.getAge()) / 2;
}
내 프로그램은 null
이 기능을 전달해서는 안됩니다 . 나는 그것을 의도하지 않았다. 그러나 우리 모두 알다시피 의도하지 않은 것은 프로그래밍에서 발생합니다.
이 문제가 발생하면 예외를 던지면 프로그램의 다른 위치에서 더 많은 문제가 발생하기 전에 문제를 발견하고 해결할 수 있습니다. 예외로 인해 프로그램이 중지되고 "나쁜 일이 발생했습니다. 수정하십시오"라고 알려줍니다. 이 null
프로그램 주위를 이동 하는 대신 다른 곳에서 문제가 발생합니다.
자, 당신은 옳습니다.이 경우에는 즉시 당장 null
발생할 NullPointerException
수 있으므로 가장 좋은 예는 아닙니다.
그러나 다음과 같은 방법을 고려하십시오.
public void registerPerson(Person person){
persons.add(person);
notifyRegisterObservers(person); // sends the person object to all kinds of objects.
}
이 경우 a null
매개 변수가 프로그램 주위로 전달되어 훨씬 나중에 오류가 발생할 수 있으며 이로 인해 원래 위치로 추적하기가 어렵습니다.
다음과 같이 기능을 변경하십시오.
public void registerPerson(Person person){
if(person == null) throw new IllegalArgumentException("Input person is null.");
persons.add(person);
notifyRegisterObservers(person); // sends the person object to all kinds of objects.
}
다른 곳에서 이상한 오류가 발생하기 전에 문제를 훨씬 많이 발견 할 수 있습니다.
또한 null
매개 변수로서의 참조는 단지 예일뿐입니다. 잘못된 논증에서 다른 것에 이르기까지 많은 종류의 문제가 될 수 있습니다. 항상 일찍 발견하는 것이 좋습니다.
그래서 내 질문은 간단합니다 :이 좋은 습관입니까? 문제 예방 도구로 예외를 사용하는 것이 좋습니까? 이것이 합법적 인 예외 적용입니까, 아니면 문제입니까?