Exception is never thrown in body of corresponding try statement

자바 환경에서 개발하다보면 다양한 에러를 접하게 됩니다. 그 중에서도 Exception 핸들링을 하면서 가장 흔하게 발생하는 에러에 대해서 소개해드리도록 하겠습니다.

물론 Exception 핸들링을 할 때 여러가지 이유로 에러가 발생할 수 있겠지만, 이 번 포스팅에서는 스택 트레이스에서 Exception is never thrown in body of corresponding try statement.라는 문구가 출력되는 경우에 대해서 다루어 보겠습니다.

Exception is never thrown in body of corresponding try statement

이 오류의 내용을 직역해보자면 try statement 내부에서 Exception이 던져질 수 없다라는 내용입니다.

발생 원인

이 에러가 발생하는 원인은 간단하지만 더 이해하기 쉽도록 설명하기 위해서 예를 들어보겠습니다.

예제


try {
  // service code

} catch (SQLException e) {

  log.error(e.getMessage());
}

위 예제에서는 SQLException에 대한 에러 핸들링을 하고 있습니다. 그렇기 때문에 try statement 안에는 SQLException을 발생시킬 메소드나 코드가 들어가 있어야합니다.

즉, 제가 service code라고 주석으로 표현해 놓은 공간에서 SQLException이 발생할 수 있어야한다는 말이됩니다.

해결 방법

이 에러를 해결하는 방법은 간단합니다.

  • try catch 구문을 사용할 필요가 없으면 제거 (예외 핸들링을 하지 않음)
  • try 문 안에 있는 메소드 또는 코드가 발생시킬 수 있는 예외로 catch 안의 파라미터 변경

예를 들어, 다음과 같이 변경할 수 있습니다.

try {
  // service code -> PersistenceException을 리턴하는 메소드 호출

} catch (PersistenceException e) {

  log.error(e.getMessage());
}

맺음

Exception is never thrown in body of corresponding try statement이 발생하는 원인에 대해서 알아보고 해결하는 방법에 대해서도 알아보았습니다.

혹시 궁금하신 점이나 이상한 점은 댓글로 남겨주시면 감사하겠습니다.

Buy me a coffee
글이 도움이 되셨다면, 커피 한 잔만 사주세요!
Comments
Copied to clipboard