Я создал свой собственный класс с методом fromString, который, как я полагаю, JAXB будет использовать для преобразования строки значения параметра в мой объект. Однако внутри этого метода fromString у меня есть блок try catch, который заполняет исключение. Как следующее.
public class Animal{
public static Animal fromString(final String input){
try{
...
}catch(IllegalArgumentException ae){
throw new CannotConvertAnimalException(); //this is my custom exception
}
}
}
И затем у меня есть сопоставитель для CannotConvertAnimalException, как показано ниже:
@Component
@Provider
public class CannotConvertAnimalExceptionHandler implements ExceptionMapper<CannotConvertAnimalException>
Дело в том, что в моем методе ресурсов. Я использую тип данных Animal
@GET
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response showAnimalInfo(Animal animal){....}
Оказывается, что когда строка параметра, которая должна быть преобразована в Animal, генерирует исключение CannotConvertAnimalException, мое обычное сопоставление исключений не обрабатывает его. Вместо этого он выбрасывает ParamException.QueryParamException и передает его моему обработчику QueryParamException для обработки ответа.
Ребята, знаете ли вы, как сделать так, чтобы, когда преобразование пошло не так, и когда сгенерировано исключение CannotConvertAnimalException, правильный обработчик обработал его?