7.3 处理异常

到现在为止,在 Spittr 应用中,我们假设所有的功能都正常运行。但是如果某个地方出错的话,该怎么办呢?当处理请求的时候,抛出异常该怎么处理呢?如果发生了这样的情况,该给客户端什么响应呢?

不管发生什么事情,不管是好的还是坏的,Servlet 请求的输出都是一个 Servlet 响应。如果在请求处理的时候,出现了异常,那它的输出依然会是 Servlet 响应。异常必须要以某种方式转换为响应。

Spring 提供了多种方式将异常转换为响应:

  • 特定的 Spring 异常将会自动映射为指定的 HTTP 状态码;

  • 异常上可以添加 @ResponseStatus 注解,从而将其映射为某一个 HTTP 状态码;

  • 在方法上可以添加 @ExceptionHandler 注解,使其用来处理异常。

处理异常的最简单方式就是将其映射到 HTTP 状态码上,进而放到响应之中。接下来,我们看一下如何将异常映射为某一个 HTTP 状态码。