중요한 매개 변수 / 종속성이 누락 된 경우 어떤 예외가 발생합니까?
이 방법을 사용하십시오
/**
 * @return List of group IDs the person belongs to
 *
 */
public List<String> getGroups() {
    if (this.getId().equals("")) return null;
}
null을 반환하는 대신 예외를 throw하고 싶습니다. 중요한 매개 변수 / 종속성이 설정되지 않은 경우 throw 할 예외는 무엇입니까?
내가 사용하는 거라고 IllegalArgumentException매개 변수 / 인수가 외부에서 제어되는 경우, 또는 IllegalStateException방법은 단지 잘못된 순간 (상태)에서 호출되는 경우. 귀하의 특정 경우에는 후자라고 생각합니다. (의심스러운) 대안은 NullPointerException.
그러나 @throws사용자가 이유를 이해할 수 있도록에 명시 적으로 문서화해야합니다 .
방법에 대한 IllegalStateException이 ?
ID가 소유자의 상태이기 때문에 IllegalStateException을 사용합니다. id가 매개 변수로 전달 되었다면 IllegalArgumentException이 맞을 것입니다.
ID가 항상 설정되어 있는지 확인할 수없는 경우 (예를 들어 유효한 ID가 전달되었는지 확인할 수있는 생성자에서 요청하여) IllegalStateException 을 던지는 다른 제안 이 올바르다 고 생각합니다 . 그러나 가능하다면 객체가 처음에이 상태에 들어갈 수 없도록 시도하고 확인하는 것이 좋습니다.
예외를 던지는 대신 빈 목록을 반환해야합니다. 종속성 / 매개 변수가 충족되지 않으면 결과가 없습니다. 게시 된 주석 및 코드에서 예상되는 동작 인 것 같습니다. ID가 비어 있으면 연결된 그룹이 없으므로 빈 목록입니다.
Exception을 확장하여 고유 한 Exception 유형을 생성합니다. 이런 식으로 함수를 호출하면 특정 예외를 포착하고 적절하게 적절하게 처리 할 수 있습니다. Extends Exception을 사용하여 동일한 작업을 수행 할 수 있지만 예외 처리에서 매우 강력 할 수 있도록 고유 한 Exception 클래스를 만드는 것을 선호합니다. 물론 이것은 당신에게 달려 있습니다.
'Development Tip' 카테고리의 다른 글
| Windows Vista에서 Visual Studio 캐시를 어떻게 지우나요? (0) | 2020.12.04 | 
|---|---|
| 종속성 속성에서 속성 변경 이벤트를 발생시키는 방법은 무엇입니까? (0) | 2020.12.04 | 
| 메소드 정의에서 메소드 이름 뒤에 올 때 등호 ( '=') 기호는 무엇을합니까? (0) | 2020.12.04 | 
| 왜 C ++ 표준 문자열 클래스에서 파생되지 않아야합니까? (0) | 2020.12.04 | 
| UTF8을 사용한 MySQL 명령 줄 형식 (0) | 2020.12.04 |