標簽:控制器 err 多個參數 str 發送 用戶 class springmvc 範圍
下面创建一个GlobalExceptionHandler.java,作为 全局异常处理类
1、@ControllerAdvice
控制器增强 (可以理解为:增加控制器功能),放在类上面
特点:必须让框架知道这个注解所在的包名,需要在springmvc配置文件声明 组件扫描器
指定 @ControllerAdvice 所在的全局异常处理类包名
1
2
3
4
2、@ExceptionHandler
@ExceptionHandler(異常的class):表示異常的類型,當發生此類型的異常時,由當前方法處理。放在方法上面
处理异常的方法和控制器方法的定义一样,可以有多個參數,可以有ModelAndView,String,void,对象类型的返回值
形参:Exception,表示Controller中抛出的异常对象,通过形参可以获取發送的异常信息
1
2
3
4
GlobalExceptionHandler.java
//@ControllerAdvice 增强控制器
@ControllerAdvice
public class GlobalExceptionHandler {
//處理NameException異常
@ExceptionHandler(value = NameException.class)
public ModelAndView doNameException(Exception exception){
ModelAndView mv = new ModelAndView();
mv.addObject("msg","用戶名必须是zs,其他用戶不能访问");
mv.addObject("ex",exception);
//指定視圖
mv.setViewName("nameError");
return mv;
}
//處理AgeException異常
@ExceptionHandler(value = AgeException.class)
public ModelAndView doAgeException(Exception exception){
ModelAndView mv = new ModelAndView();
mv.addObject("msg","年龄输入範圍有误");
mv.addObject("ex",exception);
mv.setViewName("ageError");
return mv;
}
//處理NameException,AgeException以外的,不知類型的異常
@ExceptionHandler
public ModelAndView doOtherException(Exception exception){
ModelAndView mv = new ModelAndView();
mv.addObject("msg","其他不知類型的異常");
//指定視圖
mv.setViewName("defaultError");
return mv;
}
}
標簽:控制器 err 多個參數 str 發送 用戶 class springmvc 範圍
原文地址:https://www.cnblogs.com/huaobin/p/14908582.html