J'apprends le service Web REST. J'ai besoin de quelques précisions sur la gestion des exceptions personnalisées au Jersey
. En utilisant WebApplicationException
et ExceptionMapper
vous pouvez throw
personnalisé Exception
. Ma question est dans quel scénario nous allons WebApplicationException
et ExceptionMapper
. Quelles sont les différences entre eux?WebApplicationException v/s ExceptionMapper dans le service Web RESTful (Jersey)
J'ai suivi un tutoriel, j'ai trouvé que ExceptionMapper
est comme Generic.
@Provider
class MyWrapper implements ExceptionMapper<MyPojoClass>
{
}
Une autre différence est que,
En raison de @Provider
Jersey
attraperez cette exception que par défaut, si une autre exception se produit également.
Existe-t-il d'autres différences?
MyExceptionMapper.java
package com.katte.galaxe.exception;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;
public class MyExceptionMapper implements ExceptionMapper<MyCustomException>
{
@Override
public Response toResponse(MyCustomException errMsg) {
ErrorMessage msg = new ErrorMessage(errMsg.getMessage(),1100);
return Response.status(Status.NOT_FOUND)
.type(MediaType.APPLICATION_XML)
.entity(msg)
.build();
}
}
MyWebApplicationException.java
package com.katte.galaxe.exception;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
public class MyWebApplicationException extends WebApplicationException{
private static final long serialVersionUID = -5788907118191114665L;
public MyWebApplicationException(ErrorMessage msg) {
super(Response.status(Status.NOT_FOUND)
.entity(msg)
.type(MediaType.APPLICATION_XML)
.build());
}
}