강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

박호정님의 프로필 이미지
박호정

작성한 질문수

토비의 스프링 6 - 이해와 원리

ExRateExtractor 콜백

jackson(3.0.2 버전) ObjectMapper.readValue 에러타입

작성

·

47

·

수정됨

0

3.0.2 버전의 경우 readValue가 JacksonException을 throw하는 것으로 타입이 선언되어 있는데요. (unchecked Exception 타입)

 

public <T> T readValue(String content, Class<T> valueType)
    throws JacksonException

 

Unchecked Exception(상위 에러 타입이 RuntimeException)이지만 강의처럼 try catch 이용하여 JacksonException을 catch 하면 될까요?

아님 RuntimeException 이니 별도로 catch 없이 코드를 작성하는게 좋을까요?

답변 2

0

토비님의 프로필 이미지
토비
지식공유자

RuntimeException 타입의 예외인 경우 다음 필요가 있을 때만 catch를 하면 됩니다. 그 외에는 그냥 예외로 넘어가도록 놔두시는 것이 좋겠네요.

  • 다른 예외로 전환할 필요가 있을 때. 이건 메소드의 규약을 의도적으로 특정 예외를 반환하도록 강제할 필요가 있을 때 런타임이더라도 예외 전환을 하도록 catch해서 wrapping한 다음에 다시 throw할 수 있습니다. Checked 예외라서 계속 throw/catch가 전파되는 상황을 피하기 위해서 RuntimeException으로 바꾸는 것도 이런 예이죠.

  • 예외 복구가 가능한 경우. 정말 예외적인 상황(네트워크 예외 같은)이 예상되고 이때도 최대한 성공할 수 있게 하려면 재시도나 다른 대체방법(fallback)을 사용하도록 catch할 필요가 있기도 합니다.

그 외의 경우는 굳이 catch할 필요는 없습니다. 강의에서 try/catch를 했다면 그건 아마 사용했던 버전에서는 checked exception이었기 때문일 것 같네요. 버전이 올라가면서 런타임 예외로 바뀌는 경우는 종종 있습니다. catch를 하지 않은 상태에서 코드를 놔두면 IDE에서 체크해주니까 그런 경우에 빠르게 파악하고 넘어갈 수 있죠.

0

안녕하세요, 인프런 AI 인턴입니다.
박호정님, Jackson 3.0.2 버전의 ObjectMapper.readValue 메서드는 JacksonException을 throws하는데, 이는 언체크 예외(Unchecked Exception)로 RuntimeException을 상속받고 있습니다.

일반적으로 언체크 예외는 필수가 아닌 선택적으로 처리하는 것이 권장됩니다. 하지만, 특정한 상황에서 JSON 파싱 오류를 관리하고 싶다면, try-catch 블록을 사용하여 JacksonException을 명시적으로 처리하는 것도 좋은 방법입니다. 이는 오류 발생 시 구체적인 대응을 할 수 있도록 도와줍니다.

즉, 코드의 안정성을 높이고 에러 시 특정한 동작을 수행하고 싶다면 try-catch 블록을 사용하여 예외를 처리하는 것이 좋습니다.

도움이 되었기를 바랍니다. 추가로 궁금한 점이 있다면 언제든지 질문해 주세요!

출처 정보:
- Spring Boot Reference Documentation (언급된 Jackson의 예외 및 사용 방법에 대한 정보는 포함되어 있지 않음)

박호정님의 프로필 이미지
박호정

작성한 질문수

질문하기