0.1方式一
1.在统一处理异常类上加@ControllerAdvice注解,自定义方法上加@ExceptionHandler制定要处理的异常。
@Slf4j
@ControllerAdvice
public class GlobalExceptionHandler {
/**
* ArithmeticException:数学运算异常
* NullPointerException:空指针异常
* @return
*/
@ExceptionHandler({ArithmeticException.class,NullPointerException.class}) //表示该方法只处理这两种异常
public String handleArithException(Exception e){ //捕获到的异常都会封装到Exception中
log.error("异常是:{}"+e);
return ""; //异常处理最终都是返回视图
}
}
0.2方式二
1.自定义异常类上加@ResponseStatus注解
/**
* UserTooManyException:自定义异常类
* FORBIDDEN:该状态码对应着403
* reason:出错原因
*/
@ResponseStatus(value = HttpStatus.FORBIDDEN,reason = "用户数量太多")
public class UserTooManyException extends RuntimeException{
public UserTooManyException(){};
public UserTooManyException(String message){
super(message);
}
}
2.抛出异常
if (users.size()>3){
throw new UserTooManyException(); //会自动进入UserTooManyException这个异常类中
}
3.在前台可以用${status}取出状态码,${message}取出异常信息,还有其他的信息可以接收