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统一异常处理实战

  • 相关阅读:
    每日总结2021.9.14
    jar包下载mvn
    每日总结EL表达语言 JSTL标签
    每日学习总结之数据中台概述
    Server Tomcat v9.0 Server at localhost failed to start
    Server Tomcat v9.0 Server at localhost failed to start(2)
    链表 java
    MVC 中用JS跳转窗体Window.Location.href
    Oracle 关键字
    MVC 配置路由 反复走控制其中的action (int?)
  • 原文地址:https://www.cnblogs.com/ooo0/p/10376367.html
Copyright © 2011-2022 走看看