为什么在我的代码中没有捕获到异常时Jersey会发送403状态?

时间:2014-05-06 17:57:15

标签: java rest jersey jax-rs

我使用Jersey创建REST服务,当我收到NullPointerException或其他类型的RuntimeException时,会向客户端发送403错误。为什么泽西岛发送403而不是500,我该怎么改变呢?

PS:我知道如何创建ExceptionMapper,但将它创建到RuntimeException类似乎很奇怪。我还使用特定的异常扩展WebApplicationException来处理我抛出的异常。

2 个答案:

答案 0 :(得分:0)

我无法重现你的问题。调用此资源将返回500:

@GET
@Path("/npe")
public Response triggerNpe() {
    String npe = null;
    npe.length();        
    return Response.ok().build();
}

响应:

HTTP Status 500 - Internal Server Error
javax.servlet.ServletException: java.lang.NullPointerException

我正在使用Glassfish 4和标准库。

答案 1 :(得分:0)

这不应该发生。您的错误在某处处理。 看看这些注释:

  • @ControllerAdvice
  • @ResponseStatus(HttpStatus.FORBIDDEN)
  • @ExceptionHandler(YourException.class)