Java – SpringMVC – 异常处理器

简介

SpringMVC异常指的是当我们的控制器方法在执行时,若出现运行时异常时的处理方案。

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

 

基于XML配置异常处理器

HandlerExceptionResolver 接口的实现类有:DefaultHandlerExceptionResolver 和SimpleMappingExceptionResolver

当我们的控制器方法中出现异常时,HandlerExceptionResolver 接口需要我们提供一个 ModelAndView 对象,以跳转至相应的异常页面。

DefaultHandlerExceptionResolver

DefaultHandlerExceptionResolver 是SpringMVC针对一些常见的异常进行处理,我们可以使用DefaultHandlerExceptionResolver来自动为一些常见的异常交给它处理,DefaultHandlerExceptionResolver能处理的异常包括以下

HttpRequestMethodNotSupportedException

HttpMediaTypeNotSupportedException

HttpMediaTypeNotAcceptableException

MissingPathVariableException

MissingServletRequestParameterException

ServletRequestBindingException

ConversionNotSupportedException

TypeMismatchException

HttpMessageNotReadableException

HttpMessageNotWritableException

MethodArgumentNotValidException

MissingServletRequestPartException

BindException

NoHandlerFoundException

AsyncRequestTimeoutException

 

SimpleMappingExceptionResolver

SimpleMappingExceptionResolver 是提供给我们自定义异常时的解析器,我们可以在Bean XML 中设置自定义异常。

<!--    异常处理器-->
    <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
        <property name="exceptionMappings">
            <props>
                <!--
                properties的键表示处理器方法执行过程中出现的异常
                properties的值表示若出现指定异常时,设置一个新的视图名称,跳转到指定页面
                -->
                <prop key="java.lang.ArithmeticException">error</prop>
            </props>
        </property>
        <!--
        exceptionAttribute属性设置一个属性名,将出现的异常信息在请求域中进行共享
        -->
        <property name="exceptionAttribute" value="ex"></property>
    </bean>

我们可以设置自定义异常,并设定发生异常时,会跳转的页面。

exceptionAttribute 是指,异常时会报出的异常信息,有值但是没有定义key,而exceptionAttribute的value则是定义这个异常信息的key名称,可以在页面中使用 ${ex} 来访问异常信息。

 

基于注解的异常处理器

异常处理器实际上也是一个控制器

通过注解名【@ControllerAdvice】

在控制器类上加上【@ControllerAdvice】 后,则表示该控制器为异常处理控制器

在控制器方法上加上【@ExceptionHandler】 后,则表示该控制方法为特定异常时处理的方法

【@ExceptionHandler】 需要提供一个异常类数组(当只有一个时,可以不用数组格式)

/**
 * @ControllerAdvice 表示使该控制器类为异常处理控制器
 */
@ControllerAdvice
public class ExceptionController  {

    /**
     * @ExceptionHandler(ArithmeticException.class) 表示,对控制器发生 ArithmeticException 时,会调用此异常处理方法
     * 方法可以接收 Throwable 异常信息,和 Model 对象
     * 也可以直接返回 ModelAndView 对象
     * @return 
     */
    @ExceptionHandler(ArithmeticException.class)
    public String exception(Throwable ex, Model model){
        /**
         * 把Throwable异常信息输到 error.html 页面中
         */
        model.addAttribute("ex",ex);
        return "error";
    }
}

 

如果您喜欢本站,点击这儿不花一分钱捐赠本站

这些信息可能会帮助到你: 下载帮助 | 报毒说明 | 进站必看

修改版本安卓软件,加群提示为修改者自留,非本站信息,注意鉴别

THE END
分享
二维码
打赏
海报
Java – SpringMVC – 异常处理器
简介 SpringMVC异常指的是当我们的控制器方法在执行时,若出现运行时异常时的处理方案。 SpringMVC提供了一个处理控制器方法执行过程中所出现的异常的接口:HandlerExceptionResolver   ……
<<上一篇
下一篇>>