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"
,一点也帮不了你解决问题。像这样记录原因将调用 cause
的 toString()
方法,这也无济于事。
处理异常的唯一方法是:
logger.error("Error", e);
这将正确记录堆栈跟踪,包括任何原因(您的代码甚至没有考虑原因也可能有原因)。您可以使用自定义消息代替 "Error",但这并不重要。
我正在实施一个 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"
,一点也帮不了你解决问题。像这样记录原因将调用 cause
的 toString()
方法,这也无济于事。
处理异常的唯一方法是:
logger.error("Error", e);
这将正确记录堆栈跟踪,包括任何原因(您的代码甚至没有考虑原因也可能有原因)。您可以使用自定义消息代替 "Error",但这并不重要。