1. 概述
Happy-path REST很好理解,而Spring使这在Java中变得容易。
在本教程中,我们将使用Spring将Java异常作为JSON响应的一部分进行传递。
如需更广泛的了解,请查看我们关于使用Spring进行REST错误处理和创建Java全局异常处理程序的文章。
2. 带注解的解决方案
我们将使用三个基本的Spring MVC注解来解决这个问题:
-
@RestControllerAdvice其中包含@ControllerAdvice将周围的类注册为每个@Controller应该知道的东西,@ResponseBody告诉Spring将该方法的响应呈现为JSON
-
@ExceptionHandler告诉Spring应该为给定的异常调用我们的哪些方法
它们一起创建了一个Spring bean,用于处理我们为其配置的任何异常。下面是有关结合使用@ControllerAdvice和@ExceptionHandler的更多详细信息。
3. 例子
首先,让我们创建一个任意的自定义异常返回给客户端:
public class CustomException extends RuntimeException {
// constructors
}
其次,让我们定义一个类来处理异常并将其作为JSON传递给客户端:
@RestControllerAdvice
public class ErrorHandler {
@ExceptionHandler(CustomException.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public CustomException handleCustomException(CustomException ce) {
return ce;
}
}
请注意,我们添加了@ResponseStatus注解。这将指定要发送给客户端的状态码,在我们的例子中是内部服务器错误500。此外,@ResponseBody确保将对象以JSON的方式发送回客户端。最后,下面是一个虚拟控制器,在这里只是简单的抛出我们的自定义异常:
@Controller
public class MainController {
@GetMapping("/")
public void index() throws CustomException {
throw new CustomException();
}
}
4. 总结
在这篇文章中,我们演示了如何在Spring中处理异常。此外,我们展示了如何将它们以JSON的方式发送回客户端。
与往常一样,本教程的完整源代码可在GitHub上获得。
Show Disqus Comments
Post Directory
扫码关注公众号:Taketoday
发送 290992
即可立即永久解锁本站全部文章