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

时间:2018-06-14 09:43:09

标签: java error-handling jax-rs

当我在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的行?

2 个答案:

答案 0 :(得分:1)

通常,您的控制器应处理所有异常,并为任何服务器错误(如NullPointerException)返回HTTP 500。 捕获您的Exception并在您的控制器中返回500或实现一个自定义处理程序,为所有其他方法执行此操作。

答案 1 :(得分:0)

根据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();
            }