Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Spring boot处理Rest API中的异常_Java_Rest_Spring Boot_Error Handling_Custom Exceptions - Fatal编程技术网

Java 如何使用Spring boot处理Rest API中的异常

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

我需要处理RESTAPI中的异常。 我有一个分层的体系结构,由实体、DAO、服务和控制器组成。 在我的服务中,我有模型异常,我需要知道转换这些异常以在HTTP中发送响应的最佳方法。 我读过关于异常处理程序和控制器的建议,但我不确定如何最好地实现这一点。 有人能照我吗?
谢谢

最好的方法是创建自己的自定义异常类,不要在dao和服务中处理任何异常,而只是从那里抛出自定义异常
并处理控制器中的所有执行和响应,这意味着控制器将向客户端发送完整的消息。

对于大多数异常,我将使用
@ControllerAdvice
,例如验证错误、系统错误等。另一方面,您可以在控制器中的特定情况下使用错误处理程序


这样,您就可以使用通用的错误处理程序来覆盖默认的错误处理。

一种方法是使用spring ExceptionHandler(根据spring版本的不同,可能有几种变体)


一些好的文档

这是非常固执己见的IMHO:p。当出现错误时,客户端应接收有意义的消息。对于某些客户机,只接收低级原始错误(主要是在内部网络客户机上)可能会很好,但在许多其他不想公开详细信息的情况下,这不是一个选项。对于这些场景,只有一个泛型异常类,并且没有关于发生了什么的“中间”信息(您说的只是传播异常而没有任何中间处理),这可能意味着没有可以发回的“业务错误”。