如何查看 java REST 服务中未处理异常的原因?

How to see the cause of an unhandled exception in a java REST service?

当我在 REST 服务中遇到异常时,响应如下所示:

Context Path:/test
Servlet Path:/resource
Path Info:/test/4325
Query String:fromDate=2014-03-06T11:00:48.785Z
Stack Trace
org.jboss.resteasy.spi.UnhandledException: javax.ejb.EJBException: java.lang.NullPointerException
org.jboss.resteasy.core.ExceptionHandler.handleApplicationException(ExceptionHandler.java:77)
org.jboss.resteasy.core.ExceptionHandler.handleException(ExceptionHandler.java:220)
....

我可以通过调试代码找到原因,但是有没有办法包含异常的原因?在这种情况下,发生 NullpointerException 的那一行?

通常您的控制器应该处理所有异常和 return HTTP 500 以处理任何服务器错误,例如 NullPointerException。 要么在控制器中捕获异常和 return 500,要么实现一个自定义处理程序,为所有其余方法执行此操作。

根据 Viorel Vesa 的建议,我捕获了异常并添加了自定义响应:

} catch(RuntimeException e) {
    StringWriter sw=new StringWriter();
    e.printStackTrace(new PrintWriter(sw));
    return Response.status(Response.Status.INTERNAL_SERVER_ERROR).type(MediaType.TEXT_PLAIN)
                .entity(sw.toString()).build();
}