1.spring.xml中配置文件
2.jsp->dosome.do
3.controller处理请求(如果不正确则抛出异常)
3.创建三个异常类
MyUserException
package com.bjpowernode.Exception;
public class MyUserException extends Exception{
public MyUserException() {
super();
}
public MyUserException(String message) {
super(message);
}
}
NameException
package com.bjpowernode.Exception;
//当用户的姓名异常抛出NameException
public class NameException extends MyUserException{
public NameException() {
super();
}
public NameException(String message) {
super(message);
}
}
AgeException
package com.bjpowernode.Exception;
import com.bjpowernode.Exception.MyUserException;
public class AgeException extends MyUserException {
public AgeException() {
super();
}
public AgeException(String message) {
super(message);
}
}
创建重写各自的构造方法
4.创建处理异常的类(可以理解为异常本身的控制类
因为它其实就是controller的加强)
package com.bjpowernode.Handler;
import com.bjpowernode.Exception.AgeException;
import com.bjpowernode.Exception.NameException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.ModelAndView;
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(value = NameException.class)
public ModelAndView doNameExceptionHandler(Exception e){
// 处理NameException异常
/*
处理逻辑:
1、需要把异常记录下来,记录到数据库文件,日志文件
记录日志发生的事件、哪个方法发生的、异常错误内容
2、发送通知
把异常的信息通过邮件,短信,微信发送给相关人员
3、给用户友好的提示
*/
ModelAndView mv=new ModelAndView();
mv.addObject("msg","姓名必须是zs,其他的不能访问");
mv.addObject("ex",e);
mv.setViewName("namErroe");
return mv;
}
@ExceptionHandler(value = AgeException.class)
public ModelAndView doAgeExceptionHandler(Exception e){
// 处理AgeException异常
/*
处理逻辑:
1、需要把异常记录下来,记录到数据库文件,日志文件
记录日志发生的事件、哪个方法发生的、异常错误内容
2、发送通知
把异常的信息通过邮件,短信,微信发送给相关人员
3、给用户友好的提示
*/
ModelAndView mv=new ModelAndView();
mv.addObject("msg","年龄不能为空且不能大于80");
mv.addObject("ex",e);
mv.setViewName("ageErroe");
return mv;
}
// 处理其他异常
@ExceptionHandler
public ModelAndView doOtherExceptionHandler(Exception e){
ModelAndView mv=new ModelAndView();
mv.addObject("msg","doOtherExceptionHandler...其他异常处理");
mv.addObject("ex",e);
mv.setViewName("defaultErroe");
return mv;
}
}
@ControolerAdvice
@ExceptionHandler
两个注解
运行测试:
姓名异常
!name.equals("zs"
年龄异常
if(age==null ||age >80)
其他异常