Spring MVC处理异常
来源:互联网 发布:qt5串口编程实例 编辑:程序博客网 时间:2024/06/06 01:58
Spring MVC提供了一种定义明确的处理机制来管理应用程序抛出的异常。
主要思想:在控制器类中,使用@ExceptionHandler注解定义用于处理该异常的方法
语法:该注解可以接收异常类作为其value参数,比如@ExceptionHandler(UserNotFoundException.class) 其中UserNotFoundException是自定义的异常类,也可以指定处理多个异常类,比如这样@ExceptionHandler(value = {MissingServletRequestParameterException.class,BindException.class}),这样就会处理多个异常了。
用例:
Step1:定义一个扩展了Exception的自定义异常类UserNotFoundException
public class UserNotFoundException extends Exception { public UserNotFoundException(String name){ super("User not found with name:"+name); }}Step2:控制器中定义使用注解@ExceptionHandler的处理器方法
@Controllerpublic class UserExceptionController { private Map<String,UserException> users = new HashMap<String, UserException>(); @PostConstruct public void setUsers(){ users.put("mert",new UserException("Mert","Caliskan")); users.put("kenan",new UserException("Kenan","Sevindik")); } @RequestMapping("/formException") public ModelAndView user(){ return new ModelAndView("userException","userException",new UserException()); } @RequestMapping("/resultException") public ModelAndView process(String name)throws Exception{ System.out.println(name); ModelAndView modelAndView = new ModelAndView(); UserException userException = users.get(name); if ("johndoe".equals(name)){ throw new Exception(); } if(userException==null){ System.out.println("In userException"); throw new UserNotFoundException(name); } modelAndView.addObject("userException",userException); modelAndView.setViewName("userExceptionResult"); return modelAndView; } @ExceptionHandler public ModelAndView handleException(UserNotFoundException e){ ModelAndView modelAndView = new ModelAndView("errorUser"); modelAndView.addObject("errorMessage",e.getMessage()); return modelAndView; }}
注意:这个只会是在当前的Controller里面起作用。一般来说应该在一个公共的中心位置处理异常,所以创建一个可以处理异常的全局方法就显得很有必要。Spring MVC提供了另一个注解@ControllerAdvice来完成该目的。使用注解@ControllerAdvice的类可以使用包含使用@ExceptionHandler、@InitBinder和@ModelAttribute注解的方法,而这些方法可以用于应用程序中使用@RequestMapping注解的所有方法。更通用的异常(比如SQLException或IOException)则可以在一个全局控制器中处理。
比如上述用户搜索关键字johndoe时,使用了java.lang.Exception类。全局控制器包含了处理该异常的方法
@ControllerAdvicepublic class GlobalExceptionHandler { @ExceptionHandler(Exception.class) public ModelAndView handleException(){ return new ModelAndView("errorGlobal"); }}
- Spring MVC异常处理
- spring mvc处理异常
- spring mvc 异常处理
- Spring MVC异常处理
- spring mvc 异常处理
- spring mvc异常处理
- spring mvc 异常 处理
- Spring MVC异常处理
- Spring MVC 异常处理
- spring mvc 异常处理
- Spring MVC 异常处理
- Spring MVC处理异常
- spring mvc异常处理
- Spring MVC 异常处理
- spring mvc 处理异常
- spring mvc 的异常处理
- spring mvc的异常处理
- Spring mvc 全局异常处理
- 解决Ubuntu14.04下sublime无法输入中文
- 猴子分桃 SDUT1232
- 【SSH】问题总结
- Java StringBuffer 和 StringBuilder 类
- poj 1012 Joseph
- Spring MVC处理异常
- java 中Object类里面的 getClass函数是final类型的, 为何子类调用, 结果确不同
- 国外程序员整理的Java资源大全
- Request —— 让 Node.js http请求变得超简单
- 守望先锋外挂(OWG)透视原理分析
- SAP HANA条件判断是NULL的写法
- 自编码器-tensorflow(1)
- 【fetch跨域请求】cors
- Android 目录选择获取文件路径