我正在实施一个弹簧休息应用程序作为maven多模块项目。 web,service和dao中的控制器作为层。
我遇到问题,要找到服务层中任何异常的确切原因和堆栈跟踪。我没有在服务方法中使用任何try catch块。相反,我只是抛出异常。现在,当引发空指针异常时,全局异常处理程序正在查找异常。它表示null,但不提供任何堆栈跟踪。
我需要使用try catch块吗?如果是,我将在服务方法中使用这些块。
欢迎任何建议。
答案 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参数或方法是否为空值。