2017-05-05 5 views
4

잭슨을 사용하여 JSON 변환을 처리하는 JAX-RS 프로젝트가 있습니다.잭슨이 단일 ExceptionMapper로 throw하는 예외를 잡기

Jackson이 예외를 throw하면 오류 설명이있는 문자열이 자동으로 반환됩니다.

사용자 지정 JSON 개체를 반환하고 싶으므로 ExceptionMapper을 만들었습니다.

문제는이 어획량 내가 정확히 예외의 종류가 슬로우를 지정 예외입니다.

public class MyExceptionMapper implements ExceptionMapper<UnrecognizedPropertyException> 

을하지만 변경하는 경우 UnrecognizedPropertyExceptionPropertyBindingException에 (첫 번째의 연장), 그것은 작동하지 않습니다 방법에 보낸 JSON 알 수없는 속성이 포함 된 경우

예를 들어,이 작동합니다. 한마디로

:

나는 (그 문제에 대한, 또는 내 응용 프로그램의 다른 구성 요소) 잭슨에 의해 던져진 예외를 잡는다 일반적인 예외 매퍼를 만들 수있는 방법

?

답변

0

모든 예외에 대한 대체해야

public class MyExceptionMapper implements ExceptionMapper<Exception> 

이 함께하려고합니다.

Jackson은 적절한 ExceptionMapper를 찾으면 예외에서 위로 계층을 찾습니다. 유형 계층 구조에 무언가가있는 한 오래갑니다. 그래서 UnrecognizedPropertyException은 PropertyBinding-Exception 매퍼에 의해 처리되지만 UnrecognizedPropertyException Mapper가 더 구체적이므로 많은 하위 클래스가있을 수 있고 따라서 어떤 매퍼를 사용할 지 결정할 수 없기 때문에 다른 방법으로는 처리되지 않습니다. 그래서 그것은 위로 만 작용합니다.

예외가 기본 예외이므로 모든 것이 끝납니다.