Spring默认能够处理下述异常状态:
我们想要做的第一件事就是正确地处理响应状态。默认情况下,Spring 会自动处理一 些状态。
-
500 Server Error:这表明在处理请求的时候出现了错误。
-
405 Method not Supported:当你在已有的处理器上使用错误的方法时,会出现这
个错误。
-
404 Not Found:当处理器不存在时,会出现该错误。
-
400 Bad Request:这表明请求体或参数不能匹配服务器端的预期。
-
200 OK:如果请求处理没有遇到任务错误的话,将会对应该状态。 在 Spring MVC 中,有两种方式来返回状态码:
-
在 REST 控制器中,返回 ResponseEntity 类;
-
所抛出的异常由专门的处理器来捕获。
SpringMVC提供异常处理状态码:
在 API 中处理错误的另外一种方法就是抛出异常。使用 Spring MVC,有两种方法来匹配异常:
- 在类级别使用@ExceptionHandler,类似于我们在第4章中,在上传控制器上处理IOException 的方式;
- 使用@ControllerAdvice,捕获所有控制器或控制器的一个子集所抛出的全局异常。
定义异常:
public class ResourceNotFountException extends Exception { public ResourceNotFountException() { super(); } public ResourceNotFountException(String message) { super(message); } public ResourceNotFountException(String message, Throwable cause) { super(message, cause); } public ResourceNotFountException(Throwable cause) { super(cause); } }
@ControllerAdvice public class CutsromExceptionHandler { @ExceptionHandler(ResourceNotFountException.class) @ResponseStatus(value = HttpStatus.NOT_FOUND, reason = "Entity could not be found") public void resourceNotFound() { } }