一:ResponseStatusExceptionResolver
- 在异常及异常父类中@ResponseStatus注解,然后使用这个注解的属性进行处理
- 定义一个个 @ResponseStatus注解修饰的异常类
- 若在处理器方法中抛出上述异常:若ExceptionHandlerExceptionResolver不解析述异常,由于 触发的异常 UnauthorizedException 带有@ResponseStatus 注解。因此会被ResponseStatusExceptionResolver 解析 到。最后响应HttpStatus.UNAUTHORIZED 代码给客户 端。HttpStatus.UNAUTHORIZED 代表响应码401,无权限。 关于其他的响应码请参考 HttpStatus 枚举类型源码。
二:实现
1.创建一个类并继承RuntimeException类
@ResponseStatus(value=HttpStatus.FORBIDDEN,reason="测试")
public class TestResponseStatusExceptionResolver extends RuntimeException {
/**
*
*/
private static final long serialVersionUID = 1L;
}
2.handler方法
@RequestMapping("testResponseStatusExceptionResolver")
public String testResponseStatusExceptionResolver(@RequestParam("i") int i) {
if(i==13) {
throw new TestResponseStatusExceptionResolver();
}else {
System.out.println("OK");
}
return "success";
}
3.测试页面
<a href="testResponseStatusExceptionResolver?i=10">test ResponseStatusExceptionResolver</a>
<br>