SpringMVC学习--异常处理器

  • 简介

  springmvc在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常处理器可以实现一个系统的异常处理逻辑。

  • 异常处理思路

  系统中异常包括两类:预期异常和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试通过手段减少运行时异常的发生。

  系统的dao、service、controller出现都通过throws Exception向上抛出,最后由springmvc前端控制器交由异常处理器进行异常处理,如下图:

  • 自定义异常类

  为了区别不同的异常通常根据异常类型自定义异常类,这里我们创建一个自定义系统异常,如果controller、service、dao抛出此类异常说明是系统预期处理的异常信息。

 1 public class CustomException extends Exception {
 2
 3     /** serialVersionUID*/
 4     private static final long serialVersionUID = -5212079010855161498L;
 5
 6     public CustomException(String message){
 7         super(message);
 8         this.message = message;
 9     }
10
11     //异常信息
12     private String message;
13
14     public String getMessage() {
15         return message;
16     }
17
18     public void setMessage(String message) {
19         this.message = message;
20     }
21 }
  • 自定义的异常处理器
 1 public class CustomExceptionResolver implements HandlerExceptionResolver {
 2
 3     @Override
 4     public ModelAndView resolveException(HttpServletRequest request,
 5             HttpServletResponse response, Object handler, Exception ex) {
 6
 7         ex.printStackTrace();
 8
 9         CustomException customException = null;
10
11         //如果抛出的是系统自定义异常则直接转换
12         if(ex instanceof CustomException){
13             customException = (CustomException)ex;
14         }else{
15             //如果抛出的不是系统自定义异常则重新构造一个未知错误异常。
16             customException = new CustomException("未知错误,请与系统管理 员联系!");
17         }
18
19         ModelAndView modelAndView = new ModelAndView();
20         modelAndView.addObject("message", customException.getMessage());
21         modelAndView.setViewName("error");
22
23         return modelAndView;
24     }
25
26 }
  • 错误页面 
 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 4 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"  prefix="fmt"%>
 5 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 6 <html>
 7 <head>
 8 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 9 <title>错误页面</title>
10
11 </head>
12 <body>
13 您的操作出现错误如下:<br/>
14 ${message }
15 </body>
16
17 </html>
  • 异常处理器配置

  在springmvc.xml中添加:

1 <!-- 异常处理器 -->
2     <bean id="handlerExceptionResolver" class="com.luchao.controller.exceptionResolver.CustomExceptionResolver"/>

 

 

 

时间: 2024-10-14 01:20:47

SpringMVC学习--异常处理器的相关文章

springmvc中拦截器与springmvc全局异常处理器的问题

最近在做一个练手的小项目, 系统架构中用了springmvc的全局异常处理器, 做了系统的统一异常处理. 后来加入了springmvc的拦截器, 为了一些需求, 在拦截器中的 preHandle 方法 中抛出了系统自定义异常, 当时有有个疑惑, 就是抛出的这个异常全局异常处理器怎么处理的. 这里的全局异常处理器时通过实现HandlerExceptionResolver这个借口实现的 要指出的是 resolveException方法 中 handler中代表的是什么,我没遇到这个问题之前我认为这玩

自定义springmvc统一异常处理器(实现HandlerExceptionResolver接口)不起作用的一种情况

ExceptionResolverCustom 这个是自定义的异常处理器类. 在springmvc中注册 在web.xml文件中屏蔽springmvc自动注册的异常处理器 网上的资料就是这么配置的,可自己配置的异常处理器就是不起作用 看下springmvc是如何加载自定义的异常处理器的 可以看到,springmvc从容器中取自定义异常处理器时是通过指定的id去取的, 所以说在springmvc中配置自定义处理器的时候id注意下不要写错,这个id是 handlerExceptionResolver

springmvc学习笔记(16)-异常处理器

springmvc学习笔记(16)-异常处理器 springmvc学习笔记16-异常处理器 异常处理思路 自定义异常类 全局异常处理器 错误页面 在springmvcxml配置全局异常处理器 异常测试 本文主要介绍springmvc中异常处理的思路,并展示如何自定义异常处理类以及全局异常处理器的配置 异常处理思路 系统中异常包括两类: 预期异常 运行时异常RuntimeException 前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发.测试通过手段减少运行时异常的发生. 系统的dao

SpringMVC学习(八)——SpringMVC中的异常处理器

SpringMVC在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常处理器可以实现一个系统的异常处理逻辑. 异常处理思路 我们知道,系统中异常包括两类:预期异常和运行时异常(RuntimeException),前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发.测试通过手段减少运行时异常的发生.系统的dao.service.controller出现异常都通过throws Exception向上抛出,最后由SpringMVC前端控制器交由异常处理器进行异常处理,SpringMV

springmvc异常处理器

//编写自定义异常类 package cn.bdqn.stusystem.util; public class MyException extends Exception{ private String message; public MyException(String message) { this.message = message; } public MyException() { } public String getMessage() { return message; } publ

【SpringMVC学习07】SpringMVC中的统一异常处理

我们知道,系统中异常包括:编译时异常和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发.测试通过手段减少运行时异常的发生.在开发中,不管是dao层.service层还是controller层,都有可能抛出异常,在springmvc中,能将所有类型的异常处理从各处理过程解耦出来,既保证了相关处理过程的功能较单一,也实现了异常信息的统一处理和维护.这篇博文主要总结一下SpringMVC中如何统一处理异常. 1. 异常处理思路 首先来看一下在spr

SpringMVC学习笔记(二)

复习: springmvc框架: DispatcherServlet 前端控制器:接收request,进行response HandlerMapping 处理器映射器:根据url查找Handler(通过xml配置方式或注解方式) HandlerAdapter 处理器适配器:决定了用何种特定规则去编写和之后执行Handler. Handler处理器(后端控制器):需要程序员编写,常用注解开放方式. Handler处理器执行后结果是ModelAndView,具体开发是Handler返回方法值类型包括

SpringMVC学习(十二)——SpringMVC中的拦截器

SpringMVC学习(十二)--SpringMVC中的拦截器 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理.本文主要总结一下SpringMVC中拦截器是如何定义的,以及测试拦截器的执行情况和使用方法. SpringMVC中拦截器的定义和配置 SpringMVC中拦截器的定义 在SpringMVC中,定义拦截器要实现HandlerInterceptor接口,并实现该接口中提供的三个方法,如下: public class Inter

SpringMVC学习笔记(二): 日常使用功能

前提: 1.web.xml 和spring-mvc核心配置如:SpringMVC学习笔记(一): 基础知识中注解实现. 2.类的@RequestMapping(value="/annotationController") 3.spring-mvc 推荐使用注解实现. 一.数据的接收 (一)URL参数数据的接收 1.使用 HttpServletRequest 获取参数 <span style="font-size:18px;"><span style