2013-05-02 1 views
3

하나의 예외를 던지고 있습니다. 방법은 다음과 같습니다Java 메소드 시그니처가 예외를 발생시키고 구현하지 않습니다.

public void someMethod() throws someCheckedException{ 

    //doSomething statements 
    //but no statements actually throws 'someCheckedException' 

} 

내 질문은 그 구현이 전혀 throw 문이없는 동안이 가능한이 방법 던져 'someCheckedException'을 만드는 것입니다이다.

예외를 throw하는 명령문을 구현하지 않고 throw 예외를 서명에 넣는 것은 잘못 되었습니까?

+1

그렇게하는 것이 합법적입니다. "권리"또는 "잘못"은 주관적입니다. –

+0

아니요, 잘못이 아니지만 왜 사용하지 않고도 throws 절을 추가해야합니까? – Azad

+0

@AzadOmer 많은 경우가 있습니다. RMI가 하나의 예입니다. – EJP

답변

4

이것은 완전히 정상입니다. 메소드 시그니처의 throw 문은 메소드가 throws 문에 선언 된 실제 예외를 throw하고 대개 다른 클래스에 처리를 전달하는 경우에 사용됩니다. 사용하려고 할 때 catch 문에 이러한 메소드를 넣는 것을 기억하면됩니다.

1

someMethod에 의해 호출 된 메소드 중 하나에 의해 예외가 발생합니다.

void method1() throws Exception { 
     method2(); 
    } 

    void method2() { 
     throw new Exception(); 
    } 
1

이것은 RMI에서 매우 일반적으로 이루어집니다. 리모트 인터페이스의 메소드는 RemoteException를 슬로우하도록 (듯이) 선언 할 필요가 있습니다 만, 구현 메소드는, 자기 자신의 RMI 호출을 실시하지 않는 한, 실제로 그것을 스스로 throw하지 않기 때문에, 선언 할 필요는 없습니다. 원격 예외는 RMI 자체에 의해 발생합니다. 그러나 그들은 종종 원격 인터페이스에 동의하기 위해 그렇게 선언됩니다. 그건 꼭 필요 하진 않아.