zoukankan      html  css  js  c++  java
  • springMVC统一异常处理

    Spring MVC处理异常有3种方式:

    1. 使用Spring MVC提供的简单异常处理器SimpleMappingExceptionResolver;
    2. 实现Spring的异常处理接口HandlerExceptionResolver 自定义自己的异常处理器;
    3. 使用@ExceptionHandler注解实现异常处理;

    方法一:简单异常处理器SimpleMappingExceptionResolver

    springmvc-servlet.xml添加

    <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
    	<!-- 定义默认的异常处理页面,当该异常类型的注册时使用 -->
    	<property name="defaultErrorView" value="error"></property>
    	<!-- 定义异常处理页面用来获取异常信息的变量名,默认名为exception -->
    	<property name="exceptionAttribute" value="ex"></property>
    	<!-- 定义需要特殊处理的异常,用类名或完全路径名作为key,异常也页名作为值 -->
    	<property name="exceptionMappings">
    		<props>
    			<prop key="com.xc.common.exception.BusinessException">error-business</prop>
    			<prop key="com.xc.common.exception.ParameterException">error-parameter</prop>
    			<!-- 这里还可以继续扩展对不同异常类型的处理 -->
    		</props>
    	</property>
    </bean>
    

    使用SimpleMappingExceptionResolver进行异常处理,具有集成简单、有良好的扩展性、对已有代码没有入侵性等优点,但该方法仅能获取到异常信息。

    方法二:实现异常处理接口HandlerExceptionResolver

    public class MyExceptionResolver implements HandlerExceptionResolver {
    
    	public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
    		Map<String, Object> model = new HashMap<String, Object>();
    		model.put("ex", ex);
    		System.out.println("MyExceptionResolver:" + ex.getMessage());
    
    		// 根据不同错误转向不同页面
    		if (ex instanceof BusinessException) {
    			return new ModelAndView("error-business", model);
    		} else if (ex instanceof ParameterException) {
    			return new ModelAndView("error-parameter", model);
    		} else {
    			return new ModelAndView("error", model);
    		}
    	}
    }
    

    springmvc-servlet.xml添加

    <bean id="exceptionHandler" class="com.xc.common.resolver.MyExceptionResolver" />
    

    使用实现HandlerExceptionResolver接口的异常处理器进行异常处理,具有集成简单、有良好的扩展性、对已有代码没有入侵性等优点,同时,在异常处理时能获取导致出现异常的对象,有利于提供更详细的异常处理信息。

    方法三:@ExceptionHandler注解

    @ControllerAdvice
    public class MyExceptionResolver2 {
    
    	@ExceptionHandler
    	public ModelAndView exceptionHandler(Exception ex) {
    		ModelAndView mv = new ModelAndView("error");
    		mv.addObject("ex", ex);
    		System.out.println("in testControllerAdvice");
    		return mv;
    	}
    
    }
    

    参考文章:
    使用Spring MVC统一异常处理实战

  • 相关阅读:
    MyEclipse10破解后续~~~~破解不成功
    Java分为三个体系JavaSE,JavaEE,JavaME 它们的区别以及java的各个版本?
    评分模型的检验方法和标准&信用评分及实现
    单点登录原理与简单实现
    MongoDB 3.2 从安装到使用。
    MongoDB笔记1:Windows下安装MongoDB
    MongoDB笔记2: MongoDB开启用户名密码验证
    MongoDB 官方C#驱动 封装 DbHelper
    五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)
    常用验证 正则表达式
  • 原文地址:https://www.cnblogs.com/ooo0/p/10376367.html
Copyright © 2011-2022 走看看