Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 使用ExceptionMapper映射不受支持的MediaTypeException_Spring_Rest_Jax Rs - Fatal编程技术网

Spring 使用ExceptionMapper映射不受支持的MediaTypeException

Spring 使用ExceptionMapper映射不受支持的MediaTypeException,spring,rest,jax-rs,Spring,Rest,Jax Rs,是否有一个地方可以清楚地证明我不能使用javax.ws.rs.ext.exceptionapper映射不受支持的MediaTypeException(因为它是rest轻松异常,而不是自定义应用程序异常) 我想向我的客户证明这一点。或者我想做的另一件事是将此异常映射到一个响应,该响应可以在客户端获取以显示错误。现在,当抛出此异常时,由于应用程序突然结束,它不会向客户端提供任何信息 任何帮助都将不胜感激 谢谢您可以映射此异常。为什么不呢?你有错误吗 这段代码应该可以完成这项工作 @Provider

是否有一个地方可以清楚地证明我不能使用javax.ws.rs.ext.exceptionapper映射不受支持的MediaTypeException(因为它是rest轻松异常,而不是自定义应用程序异常)

我想向我的客户证明这一点。或者我想做的另一件事是将此异常映射到一个响应,该响应可以在客户端获取以显示错误。现在,当抛出此异常时,由于应用程序突然结束,它不会向客户端提供任何信息

任何帮助都将不胜感激


谢谢

您可以映射此异常。为什么不呢?你有错误吗

这段代码应该可以完成这项工作

@Provider
public class EJBExceptionMapper implements ExceptionMapper<org.jboss.resteasy.spi.UnsupportedMediaTypeException>{

  Response toResponse(org.jboss.resteasy.spi.UnsupportedMediaTypeException exception) {
    return Response.status(415).build();
  }

}
然后你就可以

@Provider
public class EJBExceptionMapper implements ExceptionMapper<org.jboss.resteasy.spi.UnsupportedMediaTypeException>{

  Response toResponse(org.jboss.resteasy.spi.UnsupportedMediaTypeException exception) {
    Error error = new Error();
    error.setMessage("Whatever message you want to send to user");
    return Response.entity(error).status(415).build();
  }

}

您可以映射此异常。为什么不呢?你有错误吗

这段代码应该可以完成这项工作

@Provider
public class EJBExceptionMapper implements ExceptionMapper<org.jboss.resteasy.spi.UnsupportedMediaTypeException>{

  Response toResponse(org.jboss.resteasy.spi.UnsupportedMediaTypeException exception) {
    return Response.status(415).build();
  }

}
然后你就可以

@Provider
public class EJBExceptionMapper implements ExceptionMapper<org.jboss.resteasy.spi.UnsupportedMediaTypeException>{

  Response toResponse(org.jboss.resteasy.spi.UnsupportedMediaTypeException exception) {
    Error error = new Error();
    error.setMessage("Whatever message you want to send to user");
    return Response.entity(error).status(415).build();
  }

}

我发现,如果业务逻辑抛出异常,即如果我作为开发人员选择抛出异常,那么映射器就会工作。但是,如果在内部引发相同的异常,比如@Consumes annotation无法验证内容类型,则不会调用映射器。尝试为Throwable类创建异常映射器(请参见更新的答案),我发现如果业务逻辑引发的异常,即如果我作为开发人员选择引发异常,映射器就会工作。但如果在内部引发相同的异常,则说明@Consumes annotation无法验证内容类型,则不会调用映射器。尝试为Throwable类创建异常映射器(请参阅更新的答案)