我是一个新手,试图阅读一些文档,但出现了问题,请耐心等待。
我使用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
是一种用户定义的
异常。
我尝试了这个:
"public class UserNotFoundException extends Exception {
//SOME block of code
}
但是当我调用服务时,
UserDefinedExceptionMapper
没有被调用。看起来我可能在 UserDefinedException
上漏掉了一些东西。那么如何定义这个异常呢?请告诉我如何定义
UserNotFoundException
。
WebApplicationException
并覆盖其getResponse
方法。有些人喜欢为所有仅针对其JAX-RS实现定义的异常执行此操作。但是对于不扩展自WebApplicationException的异常(例如所有标准Java异常、第三方库的异常等等),映射器非常有效。 - PerceptionWebApplicationException
在其内部持有一个Response
,当您抛出其中之一时,该Response
就会返回给用户。 - Ryan StewartExceptionMapper
的优点是,您的代码可以独立于Jersey,并且您还可以映射超出您控制范围的异常(框架异常)。WebApplicationException
的优点是它更简单易用。 - Ryan Stewart