2010-12-02 3 views
1

나는 예외를 잡기를 원하지만 다른 것들을 허용하고 싶다.수업에서 예외를 잡으시겠습니까?

나는 순간에 온 솔루션입니다 : 내가 다른 사람을 좋아하고 던질 것 같은이 자동으로 예상되는 예외를 먹을 동안

protected void perfromCall(Class expectedException) throws Exception { 
    try { 
     response = call.call(request); 
    } catch (Exception e) { 
     if (!expectedException.isInstance(e)) { 
      throw new Exception(e); 
     } 
    } 
} 

, 내가 무엇을 좋아하지 않아 그것은이다에 대해 예기치 않은 예외를 래핑하고 이전에는 예상치 못한 예외를 자동으로 잡으려고 시도하기 전에 호출자가 예기치 않게 catch해야합니다. 테스트를 통과하지 못하도록 테스트 프레임 워크에 버블 링하도록 할 수 있습니다.

"클래스 A의 예외가 예상되지만 다른 예외의 경우 위의 테스트 프레임 워크에서 처리 될 때까지 체인까지 던져 보겠습니다"라고 말하는 더 깨끗한 방법이 있습니까?

편집 : 예외를 자동으로 묻는 질문에 대한 응답이 있었기 때문에 내가 왜 이것을하고 싶은지에 대한 정당성을 제시하고자했습니다. 이것은 서비스를 호출하는 테스트 프레임 워크를위한 것입니다. 일부 테스트는 서비스에 잘못된 인수를 전달하므로 유효하지 않은 요청을 잡아 서비스로 인해 예외가 발생할 것으로 예상됩니다. 따라서 예상 예외를 조용히 먹고 싶지만 예기치 않은 예외가 발생하여 테스트가 실패하게됩니다.

답변

7
protected void perfromCall(Class<?> expectedException) throws Exception { 
    try { 
     response = call.call(request); 
    } catch (Exception e) { 
     if (!expectedException.isInstance(e)) { 
      throw e; 
     } 
    } 
} 
+0

흠 나는 실험하고 컴파일러가 내 throw 문에 대해 불평하고 있었지만 어딘가 다른 뭔가가 있었음에 틀림 없다. 나는 가능한 한 빨리 이것을 받아 들일 것이다. –

관련 문제