1.处理异常的方法
- 必须添加
@ExceptionHandler
注解; - 应该使用 public 权限;
- 返回值的声明原则与处理请求的方法相同;
- 方法名称可以自定义;
- 参数列表中必须包含异常类型的参数,表示SpringMVC框架在调用-处理请求的方法之后捕获的异 常对象,另外,可按需添加 HttpServletRequest 、HttpServletResponse 等限定的某些参数。
2.自定义类处理全局异常
自定义类,将处理异常的方法放在这个类中,并且在自定义类的声明之前添加@ControllerAdvice 或 @RestControllerAdvice 注解。
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler
public R handlerException(RuntimeException e){
if(e instanceof InsertException){
return R.failure(R.State.ERR_INSERT,e);
}
}
}
3.封装响应结果的R类
- 链式编程
推荐在 R 类的声明之前,在已经有 @Data 注解能生成SETTERS & GETTERS的基础之上,再补充添加@Accessors(chain=true) 注解,则Lombok在生成SETTERS方法时,各方法都会返回当前对象!:
@Data
@Accessors(chain = true)
public class R<T> {
private Integer state;
private String message;
private T data;
public static R ok(){
return new R().setState(2000);
}
public static <T>R<T> ok(T data){
return R.ok().setData(data);
}
public static R failure(Integer state, Exception e){
return new R().setState(state).setMessage(e.getMessage());
}
public interface State{
Integer OK = 2000;
}
}