REST api için global istisnaları yakalamak için jersey ve ExceptionMapper kullanıyorum. Uygulamamdaki tüm istisnalar iyi çalışıyor ancak jackson tarafından atılan istisnaları yakalayamıyorum. Örneğin, son noktamdan biri bir enum içeren bir nesneyi kabul eder. İstekte Json numaralandırma jarse olmayan bir değer varsa ben kod, bu mapper ulaşmak asla bu mapperJersey herhangi bir Jackson Özel Durumunu yakalayamıyor
@Provider
@Component
public class JacksonExceptionMapper implements ExceptionMapper<JsonMappingException> {
@Override
public Response toResponse(JsonMappingException e) {
....
}
}
oluşturduk rağmen bu istisna geri
Can not construct instance of my.package.MyEnum from String value 'HELLO': value not one of declared Enum instance names: [TEST, TEST2]
at [Source: org.glassfish.jersey.me[email protected]5922e236; line: 3, column: 1] (through reference chain: java.util.HashSet[0]->....)
atmak.
Bu istisnaları yakalamak için yapmamız gereken bir şey var mı?
DÜZENLEME Not: Ben jus Ben mapper denir bu durumda InvalidFormatException kullanmak yerine JsonMappingException az genel çektim var. Ama hala anlamıyorum, çünkü InvalidFormatException JsonMappingException öğesini genişletiyor ve aynı şekilde çağrılmalıdır.
Hangi versiyonda Jackson? –
jersey-media-json-jackson (2.22.1), fakat ben de com.tr335.jpg.jackson.core jackson-annotations (2.6.3) de var. – Johny19
Jackson zaten bu istisna için bir mapper'e sahip: (https: // github com/fasterXML/jackson-jaxrs-sağlayıcıları/damla/ana/baz/src/ana/java/com/fasterxml/jackson/jaxrs/baz/JsonMappingExceptionMapper.java). Muhtemelen kullanılmakta olan budur. –