1.首先在SpringMvc的配置文件中指名全局异常类的位置
<bean class="com.dgm.exception.MyExceptionResolver"></bean>
2.自定义异常处理
package com.dgm.exception;
public class MyException extends RuntimeException {
public MyException(String message) {
super(message);
}
}
3.编写全局异常处理器
package com.dgm.exception;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyExceptionResolver implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
System.out.println("-------发生异常-------");
e.printStackTrace();//打印出发生的异常
String message = null;
if(e instanceof MyException){
message = e.getMessage();
//如果这个类是MyException的子类,那么它就是我们自己定义的异常
}else{
message = "未知错误请联系管理员";
}
ModelAndView mv = new ModelAndView();
mv.addObject("error",message);
mv.setViewName("error");
return mv;
}
抛出异常
public void updateEmailAndPhoneNum(Users users,String id){
System.out.println(users.getEmail());
Users user = usersMapper.findUsersByEmail(users.getEmail());
//如果user是不是空
if( user != null && !user.equals("")){
throw new MyException("该邮箱已注册,请换一个哦~");
}else {
String email =users.getEmail();
String phoneNum = users.getPhoneNum();
usersMapper.updateEmailAndPhoneNum(email,phoneNum,id);
}
}