나는 예외를 사용하여 문제를 조기에 포착합니다. 예를 들면 다음과 같습니다.
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매개 변수로서의 참조는 단지 예일뿐입니다. 잘못된 논증에서 다른 것에 이르기까지 많은 종류의 문제가 될 수 있습니다. 항상 일찍 발견하는 것이 좋습니다.
그래서 내 질문은 간단합니다 :이 좋은 습관입니까? 문제 예방 도구로 예외를 사용하는 것이 좋습니까? 이것이 합법적 인 예외 적용입니까, 아니면 문제입니까?