2012-04-01 2 views
2

단일 값 및 다중 값 데이터를 모두 처리하는 Java 클래스가 있습니다. 따라서 두 가지 방법, 즉 getValue()getValues()을 노출합니다. 그러나 getValue 메서드가 여러 값의 데이터에 대해 호출 될 때 일종의 예외를 throw 싶습니다. 내가 사용할 수있는 가장 관련있는 예외 클래스는 무엇입니까? 리플렉션을 사용하지 않았기 때문에 IllegalAccessException이 적합하지 않다고 생각합니다. 어떤 인수도 전달하지 않기 때문에 어느 쪽도 IllegalArgumentException이 적절하지 않습니다. 가장 일반적이고 다양한 선택하지 않은 런타임 예외 -불법 메소드

class getValException extends Exception 
{ 
    public getValException(String message) 
    { 
     super(message); 
    } 
} 
+2

미안하지만, 나에게 우스운 냄새가 난다. 프로그램 구조에 대해 더 자세히 이야기하고 심지어 코드를 보여줄 수도 있습니까? 어쩌면 하나의 메소드 만 필요하고 리턴 할 값의 수를 클래스에 알려주는 매개 변수를 가져야합니다. 위에 게시 한 내용을 기반으로합니다. 그리고 질문에 관해서는, 때로는 자신 만의 Exception 클래스를 만드는 것이 가장 쉽고 좋습니다. 그러나 다시 한번, 실제로 이것을 실제로 필요로하는지 봅시다. –

+0

코드는 다음과 같습니다. class {private Collection values; // 단일 값을 반환하거나 예외를 던집니다 public T getValue(); // 여러 값 또는 컬렉션에 래핑 된 단일 값을 반환합니다. Collection getValues ​​(); } – Neel

답변

13

UnsupportedOperationException :

+2

쿨! 고마워 ...이게 완벽 해! – Neel

0

당신은 당신이 이런 일을 할 수있는이 link

보고 노력이 클래스를 위해 특별히 던져 자신의 예외를 만들 수 Java에서.

http://docs.oracle.com/javase/6/docs/api/java/lang/UnsupportedOperationException.html

+2

아마도 내 자신의 예외를 만드는 것은 사람들에게 새로운 API를 배우고 수정해야하기 때문에 절대적으로 필요하지 않는 한 좋은 아이디어가 아닐 수도 있습니다. – Neel

+2

Bloch는 Effective Java 2nd에서 이미 존재하는 예외가있을 때 새로운 예외를 만드는 것이 잘못된 코딩 방법이라고 말합니다. – vaxquis

6

java.lang.IllegalStateException이에 가장 적합한 표준 예외입니다.

Javadoc가 말한다 : 부정 또는 올바르지 않은 때에 메소드가 불려 간

신호. 즉, Java 환경 또는 Java 응용 프로그램이 요청 된 작업에 적절한 상태가 아닙니다.

귀하의 경우에는 부적절한시기에 호출 된 메소드가 호출되었음을 의미합니다.

+1

제 물건이 * 불법 * 상태에 있지 않기 때문에 제 경우에는 약간 부적합합니다. – Neel

+0

@ 지저귐 : 제발 내 편집을 확인하십시오. –

+0

음, 부적절한 시간이 아닐 수도 있지, 그렇지? 그러나 사실은 내 객체가 다중 값이어야하므로 getValue에 의해 반환되어야하는 값입니다. 이것은 불확정합니다 (0 번째 값은 예상하지 못할 수도 있음) – Neel