spring 服务中的休息异常

spring rest exception in service

我正在实施一个 spring 休息应用程序作为一个 maven 多模块项目。 Web、服务和 Dao 中的控制器作为层。

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

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

欢迎提出任何建议。

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

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

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

使用 getMessage() 查看您遇到的异常是无用的。一个NullPointerException returns作为它的消息String "null",一点也帮不了你解决问题。像这样记录原因将调用 causetoString() 方法,这也无济于事。

处理异常的唯一方法是:

logger.error("Error", e);

这将正确记录堆栈跟踪,包括任何原因(您的代码甚至没有考虑原因也可能有原因)。您可以使用自定义消息代替 "Error",但这并不重要。