2013-02-14 2 views
1

저는 RecordingCommand 클래스를 org.eclipse.emf.transaction.RecordingCommand;에서 확장했습니다. 보호 된 메서드 doExecute()을 재정의해야합니다. 메서드 정의에 던져 넣을 예외가 없습니다. 그러나 내 코드 안에 예외가 있고 그 예외를 처리해야하는 예외를 처리해야합니다. 여기 나는 메시지 e을 던지지만 이것이 올바른 방법임을 확신하지 못합니다.예외 메소드 오버라이드 메소드를 예외없이 org 메소드 인터페이스에 정의했습니다.

는 난 그냥

@Override 
protected void doExecute() { 
    try { 
     //my logic 
    } catch(Exception e) { 
     throw e; 
    } 
} 

답변

5

당신은 항상 필요로하는 방법에서 UncheckedException을 던질 수있는 예외 iethrow E

을 던져 그것이 더 복잡한 생각이 때문에 문제를 이해 바랍니다 throws 절에서 선언 할 수 없습니다.

따라서 RuntimeException 또는 RuntimeException 자체를 확장하는 것과 같은 확인되지 않은 예외에서 예외를 래핑합니다.

try { 
    //my logic 
} catch(Exception e) { 
    throw new RuntimeException(e); 
} 

그냥 완성도를 위해서

은, 모든 예외를 잡을 것이다, Exception에 대해 하나의 catch 블록을 가지고 좋은 생각이다. 오히려 메소드가 던질 수있는 특정 유형의 예외에 대해 catch 블록을 가져야합니다.

+0

+1 또는 'RuntimeException'을 확장하는 경우 다른 'Exception'사용자 정의 'Exception'조차도. –

+0

@Rohit Jain - 감사합니다! –

관련 문제