做注册功能时,由于数据库中设置了唯一约束,导致账户重复时出现异常。
解决方案:
在全局异常中捕获,然后精准捕捉DuplicateKeyException,返回【账号重复】的提示信息。
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(DuplicateKeyException.class)
public ResultUtil duplicateKeyException(Exception e){
System.out.println(" 统一异常 ");
System.out.println(e.getMessage());
e.printStackTrace();
return new ResultUtil(0,"duplicateKeyException","该账号已存在,注册失败");
}
@ExceptionHandler(Exception.class)
public Map showInfoE(Exception e){
System.out.println(" 统一异常 ");
System.out.println(e.getMessage());
e.printStackTrace();
Map codeMap = new HashMap();
codeMap.put("code",800);
codeMap.put("msg","系统繁忙!!");
return codeMap;
}
// SQLIntegrityConstraintViolationException
// @ExceptionHandler 参数为要处理器的 异常类(或子类)
// 注解参数不声明指定异常类,则默认为方法列表中的异常参数类
@ExceptionHandler(ArithmeticException.class)
public Map showInfo(Exception e){
System.out.println(" 算数异常 ");
System.out.println(e.getMessage());
Map codeMap = new HashMap();
codeMap.put("code",800);
codeMap.put("msg","你不能把分母设置为0");
return codeMap;
}
}