服务中的春假休息

时间:2016-09-11 19:20:41

标签: java spring spring-mvc spring-rest

我正在实施一个弹簧休息应用程序作为maven多模块项目。 web,service和dao中的控制器作为层。

我遇到问题,要找到服务层中任何异常的确切原因和堆栈跟踪。我没有在服务方法中使用任何try catch块。相反,我只是抛出异常。现在,当引发空指针异常时,全局异常处理程序正在查找异常。它表示null,但不提供任何堆栈跟踪。

我需要使用try catch块吗?如果是,我将在服务方法中使用这些块。

欢迎任何建议。

2 个答案:

答案 0 :(得分:1)

您的异常处理程序未显示堆栈跟踪,因为您没有告诉它。你的代码很糟糕而且坏了。

logger.error("Error: " + e.getMessage());
logger.error("Error [cause]: " + e.getCause());

使用getMessage()查看您遇到的异常是无用的。 NullPointerException将消息传递给字符串"null",这不会帮助您解决一些问题。记录这样的原因会调用toString()的{​​{1}}方法,这也不会有用。

处理异常的唯一方法是:

cause

这将正确记录堆栈跟踪,包括任何原因(您的代码甚至不认为原因也可能有原因)。您可以使用自定义消息而不是“错误”,但这并不重要。

答案 1 :(得分:0)

您可以使用@ExceptionHandler。 Here你会找到一些例子,看看不需要修改你当前的代码。请记住使用Logger或放置System.out.printLn()以查看异常的堆栈跟踪。 也许您必须考虑调试您的方法以查看waht参数或方法是否为空值。