全局异常GlobalException.java,basePackages:controller层所在的包全路径
import com.guet.score_management_system.common.domian.AjaxResult;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* 全局异常处理
*/
@ControllerAdvice(basePackages = "com.demo.controller")
public class GlobalException {
/**统一处理异常@ExceptionHandler,用于Exception*/
/* @ExceptionHandler(Exception.class)
@ResponseBody
public AjaxResult error(HttpServletRequest request,Exception e){
return AjaxResult.error("系统异常");
}*/
/**ExceptionHandler用来捕获ServiceException异常*/
@ExceptionHandler(ServiceException.class)
/**将AjaxResult转为JSON对象*/
@ResponseBody
/**需要自定义一个类,用来继承RuntimeException*/
public AjaxResult serviceException(ServiceException e){
return AjaxResult.error("500",e.getMessage());
}
}
自定义异常ServiceException.java
public class ServiceException extends RuntimeException {
/**
* 异常信息
*/
private String message;
public ServiceException(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
使用,任意controller类
public User login(User user) {
/** 判断输入的用户名是否为空 */
if (user.getUsername() == null || "".equals(user.getUsername())){
throw new ServiceException("用户名不能为空");
}
/** 判断输入的密码是否为空 */
if (user.getPassword() == null || "".equals(user.getPassword())){
throw new ServiceException("密码不能为空");
}
/** 判断获取输入的用户名和密码与数据库中的是否对应 */
User dbUser = userMapper.selectUsernameAndPassword(user.getUsername(), user.getPassword());
if (dbUser == null){
throw new ServiceException("用户名或密码错误");
}
return dbUser;
}
前端
login() {
request.post('/login', this.form).then(res => {
if(res.code === '200'){
this.$message.success('登录成功')
// 跳转到首页
this.$router.push('/')
}else{
this.$message.error(res.message)
}
})
},
效果: