Java 如何使用Spring boot处理Rest API中的异常
我需要处理RESTAPI中的异常。 我有一个分层的体系结构,由实体、DAO、服务和控制器组成。 在我的服务中,我有模型异常,我需要知道转换这些异常以在HTTP中发送响应的最佳方法。 我读过关于异常处理程序和控制器的建议,但我不确定如何最好地实现这一点。 有人能照我吗?Java 如何使用Spring boot处理Rest API中的异常,java,rest,spring-boot,error-handling,custom-exceptions,Java,Rest,Spring Boot,Error Handling,Custom Exceptions,我需要处理RESTAPI中的异常。 我有一个分层的体系结构,由实体、DAO、服务和控制器组成。 在我的服务中,我有模型异常,我需要知道转换这些异常以在HTTP中发送响应的最佳方法。 我读过关于异常处理程序和控制器的建议,但我不确定如何最好地实现这一点。 有人能照我吗? 谢谢最好的方法是创建自己的自定义异常类,不要在dao和服务中处理任何异常,而只是从那里抛出自定义异常 并处理控制器中的所有执行和响应,这意味着控制器将向客户端发送完整的消息。对于大多数异常,我将使用@ControllerAdvic
谢谢最好的方法是创建自己的自定义异常类,不要在dao和服务中处理任何异常,而只是从那里抛出自定义异常
并处理控制器中的所有执行和响应,这意味着控制器将向客户端发送完整的消息。对于大多数异常,我将使用
@ControllerAdvice
,例如验证错误、系统错误等。另一方面,您可以在控制器中的特定情况下使用错误处理程序
这样,您就可以使用通用的错误处理程序来覆盖默认的错误处理。一种方法是使用spring ExceptionHandler(根据spring版本的不同,可能有几种变体)
一些好的文档这是非常固执己见的IMHO:p。当出现错误时,客户端应接收有意义的消息。对于某些客户机,只接收低级原始错误(主要是在内部网络客户机上)可能会很好,但在许多其他不想公开详细信息的情况下,这不是一个选项。对于这些场景,只有一个泛型异常类,并且没有关于发生了什么的“中间”信息(您说的只是传播异常而没有任何中间处理),这可能意味着没有可以发回的“业务错误”。