Java Jersey中的Exception Apper抛出MapPableContainerException
我创建了一个Rest服务,并希望实现异常处理,但在我尝试运行服务时,它会抛出MapPableContainerException。你可以在这里找到我的代码 我的服务:Java Jersey中的Exception Apper抛出MapPableContainerException,java,rest,exception-handling,jersey,Java,Rest,Exception Handling,Jersey,我创建了一个Rest服务,并希望实现异常处理,但在我尝试运行服务时,它会抛出MapPableContainerException。你可以在这里找到我的代码 我的服务: @GET @Produces({MediaType.APPLICATION_JSON}) @Path("add") public Response addJobSeeker() throws MyCustomException{ throw new MyCustomException("My Exception");
@GET
@Produces({MediaType.APPLICATION_JSON})
@Path("add")
public Response addJobSeeker() throws MyCustomException{
throw new MyCustomException("My Exception");
}
我的特例课
@Provider
public class MyExceptionMapper extends Exception implements ExceptionMapper<MyCustomException>{
/**
*
*/
private static final long serialVersionUID = 1L;
public MyExceptionMapper(String str){
super(str);
}
@Override
public Response toResponse(MyCustomException exception) {
System.out.println("In my exception mapper -- "+exception.getMessage());
Success sc = new Success(404, "Hello", "I am mukesh");
return Response.status(404).entity(sc).type(MediaType.APPLICATION_JSON).build();
}
}
ExceptionMapper
的通用参数类型应该是您的异常类型。因为映射器扩展了异常,所以应该抛出MyExceptionMapper而不是MyCustomException,或者将泛型类型设为MyCustomExceptioninstead@peeskillet感谢您的回复,我根据您的建议尝试了,也编辑了问题,但我仍然获取相同的问题。您是如何注册地图绘制者的?它只有一个除异常消息之外的构造函数?您不应该以这种方式实现映射器。只需将您的自定义异常用作泛型类型,并去掉该构造函数,直到他不再使用它为止。我根据您的建议更新了我的代码和问题,但仍然收到相同的问题,我不知道为什么:(1.不要使映射器扩展异常。2.将映射器的泛型类型设置为自定义异常,即ExceptionMapper
。3.抛出自定义异常。4.在映射器中删除该构造函数。它需要一个默认构造函数。5.确保映射器已注册。您可以在构造函数中向ck
public class MyCustomException extends Exception {
/**
*
*/
private static final long serialVersionUID = 1L;
public MyCustomException(String str){
super(str);
}