【SpingMVC】Spring之异常处理器

异常处理器



在这里插入图片描述

前言

本文也是对于如何配置异常处理器的两种方式,xml和注解来分开讲解


零、前置知识

你一定见过这样的页面,当然也是很常见了,有时候会因为一点疏忽导致各种各样的错误。

在这里插入图片描述

但是如果是以这样的页面直接展示给用户,肯定是很不友好的,自然用户体验也是十分差。这时候就需要有自定义异常处理器,对于出现的异常进行处理和展示更好的信息反馈给用户,让用户体验上升。

SpringMVC提供了一个处理控制器方法执行过程中所出现的异常的接口:HandlerExceptionResolver

HandlerExceptionResolver接口的实现类有:DefaultHandlerExceptionResolver和SimpleMappingExceptionResolver(自定义)

一、异常处理器之XML配置

exceptionMappings异常的映射 将prop中配置的异常key于值error形成映射关系,如果出现了该异常类的异常,properties的键表示处理器方法执行过程中出现的异常,properties的值表示若出现指定异常时,设置一个新的视图名称,跳转到指定页面

exceptionAttribute则是将异常信息共享在请求域中,value值则是用于存储异常信息的

<!--配置异常处理器-->
    <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
        <property name="exceptionMappings">
            <props>
                <prop key="java.lang.ArithmeticException">error</prop>
            </props>
        </property>
        <!--设置将异常信息共享在请求域-->
        <property name="exceptionAttribute" value="ex"></property>
    </bean>

二、异常处理器之注解配置

prop操作properties配置文件时是不能使用put和get方法的 因为put和get操作的是Object类型,响应给页面的只能是字符串,Properties主要是操作配置文件的,配置文件也只能接受字符串的参数,Object类型的自然是不行的

 //@ControllerAdvice将当前类标识为异常处理的组件
@ControllerAdvice
public class ExceptionController {

    //@ExceptionHandler用于设置所标识方法处理的异常
    @ExceptionHandler(ArithmeticException.class)
    //ex表示当前请求处理中出现的异常对象
    public String handleArithmeticException(Exception ex, Model model){
        model.addAttribute("ex", ex);
        return "error";
    }

}

@ControllerAdvice 将当前类标识为异常处理的控制层组件,需要搭配@ExceptionHandler(异常类的Class)-----》绑定真正执行该异常的方法
形参中的ex用于存储异常的信息 model则是共享域中的数据,用于最后渲染页面的数据


总结

本文也算是配置的方式讲解,由于我也是小菜,后续会对文章进行加强,自然也很需要大家的监督,对于文章提出不足,会乐于采取大家的意见,进行整改