全局异常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)@ResponseBodypublic 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)}})
},
效果: