我是新手,试图阅读一些文档但它不起作用,请多多包涵。
我使用 ExceptionMappers
创建了一个 UserNotFoundMapper
,如下所示:
public class UserNotFoundMapper implements ExceptionMapper<UserNotFoundException> {
@Override
public Response toResponse(UserNotFoundException ex) {
return Response.status(404).entity(ex.getMessage()).type("text/plain").build();
}
}
这在我的服务中:
@GET
@Path("/user")
public Response getUser(@QueryParam("id") String id) throws UserNotFoundException{
//Some user validation code with DB hit, if not found then
throw new UserNotFoundException();
}
UserNotFoundException
是 User-Defined
异常。
我试过了:
public class UserNotFoundException extends Exception {
//SOME block of code
}
但是当我调用服务时,UserDefinedExceptionMapper
没有被调用。看来我可能在 UserDefinedException
中遗漏了一些东西。那么如何定义这个异常呢?
请告诉我如何定义 UserNotFoundException
。
最佳答案
您需要使用 @Provider
注释您的异常映射器,否则它永远不会注册到 JAX-RS 运行时。
@Provider
public class UserNotFoundMapper implements
ExceptionMapper<UserNotFoundException> {
@Override
public Response toResponse(UserNotFoundException ex) {
return Response.status(404).entity(ex.getMessage()).type("text/plain")
.build();
}
}
关于java - JAX-RS jersey ExceptionMappers 用户定义的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15185299/