当我在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的行?
答案 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();
}