目录
利用springmvc框架进行异常处理
1.异常处理思想:aop
2.异常处理简介
3.异常处理步骤、
异常发生时需要做的事
这里只针对给用户提示做代码演示:
1)代码目录结构
2)自定义异常类
//自定义异常
public class MyUserException extends Exception {
public MyUserException() {
super();
}
public MyUserException(String message) {
super(message);
}
}
3)处理名字异常类
//表示当用户的name有异常时,抛出NameException
public class NameException extends MyUserException {
public NameException() {
super();
}
public NameException(String message) {
super(message);
}
}
4)处理年龄异常类
//当年龄有问题时,抛出的异常
public class AgeException extends MyUserException {
public AgeException() {
super();
}
public AgeException(String message) {
super(message);
}
}
5)和jsp交互的Controller类
@Controller
public class ExceptionController {
@RequestMapping("/exceptionHandle")
public ModelAndView exceptionHandle(String name, Integer age) throws MyUserException {
System.out.println(name);
System.out.println(age);
//根据请求参数抛出异常给框架
if(!"tom".equals(name)){
throw new NameException("姓名不正确!!!");
}
if(age==null||age>80){
throw new AgeException("年龄太大了!!!");
}
ModelAndView mv=new ModelAndView();
mv.addObject("myname",name);
mv.addObject("myage",age);
mv.setViewName("show");
return mv;
}
}
6)控制器增强类(也就是说给控制器类增加功能--异常处理功能)
/**
* @ControllerAdvice 控制器增强(也就是说给控制器类增加功能--异常处理功能)
* 位置: 在类的上面
* 特点: 必须让框架知道这个注解所在的包名,需要在springmvc配置文件声明组件扫描器,指定@ControllerAdvice所在的包名
*/
@ControllerAdvice
public class GlobalExceptionHandle {
//定义方法,处理发生的异常
/**
* 处理异常的方法和控制器方法的定义一样,可以有多个参数,可以有ModelAndView,String,void,对象类型的返回值
*
* 形参:Exception,表示Controller中抛出的异常对象,通过形参可以获取发生的异常信息。
*
* @ExceptionHandler(异常的class):表示异常的类型,当发生此类型异常时,由当前方法处理
*/
//处理NameException的异常
@ExceptionHandler(value = NameException.class)
public ModelAndView handleNameException(Exception exception){
ModelAndView mv=new ModelAndView();
mv.addObject("msg","用户名必须是tom");
mv.addObject("exception",exception);
mv.setViewName("nameException");
return mv;
}
//处理AgeException的异常
@ExceptionHandler(value = AgeException.class)
public ModelAndView handleAgeException(Exception exception){
ModelAndView mv=new ModelAndView();
mv.addObject("msg","你的年龄不能大于80");
mv.addObject("exception",exception);
mv.setViewName("ageException");
return mv;
}
//处理其他的异常
@ExceptionHandler
public ModelAndView handleOtherException(Exception exception){
ModelAndView mv=new ModelAndView();
mv.addObject("msg","其他异常");
mv.addObject("exception",exception);
mv.setViewName("defaultException");
return mv;
}
}
7)配置文件中配置注解扫描器,以及增加注解驱动
<!-- 扫描web相关的bean -->
<context:component-scan base-package="controller"/>
<context:component-scan base-package="exceptionHandle"/>
<!--注解驱动-->
<mvc:annotation-driven />
4.springmvc 框架利用aop思想处理异常图形化理解