`
bluerose
  • 浏览: 145995 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Spring定制自己的异常

    博客分类:
  • Java
阅读更多

为了能根据不同的情况做出不同的反应,我们可以让不同的情况抛出异常。

Spring里提供了HandlerExceptionResolver类来捕获异常。

下面 以代码作说明

1.首先抛出异常

if (meeting.getNeedExpert().size() == 0
					|| meeting.getProject().size() == 0) {
				throw new NoExpertException("此会议还没有专家");
			}

 我们自己定义了一个异常类为NoExpertException。

public class NoExpertException extends IllegalStateException {
  
	
	private static final long serialVersionUID = 0L;

	public NoExpertException() {
    }

    public NoExpertException(String s) {
        super(s);
    }
}

 2.配置异常解析器

	<bean id="noExpertExceptionResolver"
		class="com.itware.lxgl.workflow.exception.NoExpertExceptionResolver">
		<property name="order">
			<value>1</value>
		</property>
		<property name="exceptionView">
			<value>exception/noExpertException</value>
		</property>
		<property name="backUrl">
			<value>/home/todoList.htm</value>
		</property>
		<property name="backMsgKey">
			<value>返回</value>
		</property>
	</bean>

 3.编写解析器代码

public class NoExpertExceptionResolver implements Ordered,
        HandlerExceptionResolver {
	private int order;
    private String exceptionView;

    private String backUrl = "/";

    private String backMsgKey;

    public ModelAndView resolveException(HttpServletRequest request,
            HttpServletResponse response, Object handler, Exception ex) {
        if (ex instanceof NoExpertException) {
        	String errorMessage = ex.getMessage();
            Map model = new HashMap();
            model.put("backUrl", backUrl);
            model.put("backMsgKey", backMsgKey);
            model.put("errorMessage", errorMessage);
            return new ModelAndView(exceptionView, model);
        }

        return null;
    }

    public int getOrder() {
        return 0;
    }

    public void setOrder(int order) {
        this.order = order;
    }

    public void setExceptionView(String exceptionView) {
        this.exceptionView = exceptionView;
    }

    public void setBackUrl(String backUrl) {
        this.backUrl = backUrl;
    }

    public void setBackMsgKey(String backMsgKey) {
        this.backMsgKey = backMsgKey;
    }
}

 继承HandlerExceptionResolver以捕获异常,进行处理。!

 

分享到:
评论

相关推荐

    Spring-Reference_zh_CN(Spring中文参考手册)

    3.5.2. 了解自己 3.5.2.1. BeanFactoryAware 3.5.2.2. BeanNameAware 3.6. bean定义的继承 3.7. 容器扩展点 3.7.1. 用BeanPostProcessor定制bean 3.7.1.1. 使用BeanPostProcessor的Hello World示例 3.7.1.2. ...

    Spring 2.0 开发参考手册

    2. Spring 2.0 的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 更简单的XML配置 2.2.2. 新的bean作用域 2.2.3. 可扩展的XML编写 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 2.3.2. 对@...

    从零开始学Spring Boot

    1.33 导入时如何定制spring-boot依赖项的版本 1.34 Spring Boot导入XML配置 1.35 Spring Boot使用@SpringBootApplication注解 1.36 Spring Boot 监控和管理生产环境 1.37 Spring Boot的启动器Starter详解 1.38 ...

    spring chm文档

    Spring Framework 开发参考手册 Rod Johnson Juergen Hoeller Alef Arendsen Colin Sampaleanu Rob Harrop Thomas Risberg Darren Davison Dmitriy Kopylenko Mark Pollack Thierry Templier Erwin ...

    Spring中文帮助文档

    3.5.2. 了解自己 3.6. bean定义的继承 3.7. 容器扩展点 3.7.1. 用BeanPostProcessor定制bean 3.7.2. 用BeanFactoryPostProcessor定制配置元数据 3.7.3. 使用FactoryBean定制实例化逻辑 3.8. The ...

    Spring API

    3.5.2. 了解自己 3.6. bean定义的继承 3.7. 容器扩展点 3.7.1. 用BeanPostProcessor定制bean 3.7.2. 用BeanFactoryPostProcessor定制配置元数据 3.7.3. 使用FactoryBean定制实例化逻辑 3.8. The ...

    Spring攻略(第二版 中文高清版).part1

    8.8 映射异常视图 312 8.8.1 问题 312 8.8.2 解决方案 312 8.8.3 工作原理 312 8.9 用@Value在控制器中赋值 314 8.9.1 问题 314 8.9.2 解决方案 314 8.9.3 工作原理 314 8.10 用控制器处理表单 ...

    spring.net中文手册在线版

    4.5.2.让对象了解自己的容器 4.5.2.1.IObjectFactoryAware接口 4.5.2.2.IObjectNameAware接口 4.5.3.IFactoryObject接口 4.6.抽象与子对象定义 4.7.与IObjectFactory接口交互 4.7.1.获得IFactoryObject对象本身,而...

    spring security 参考手册中文版

    29.4.6 LDAP属性和定制的UserDetails 227 29.5 Active Directory认证 228 29.5.1 ActiveDirectoryLdapAuthenticationProvider 228 活动目录错误代码 229 30. JSP标签库 230 30.1声明Taglib 230 30.2授权标签 230 ...

    Spring攻略(第二版 中文高清版).part2

    8.8 映射异常视图 312 8.8.1 问题 312 8.8.2 解决方案 312 8.8.3 工作原理 312 8.9 用@Value在控制器中赋值 314 8.9.1 问题 314 8.9.2 解决方案 314 8.9.3 工作原理 314 8.10 用控制器处理表单 ...

    spring in action英文版

     2.4.4 定制属性编辑器  2.4.5 解析文本信息  2.4.6 监听事件  2.4.7 发布事件  2.4.8 感知其他Bean  2.5 小结  第3章 创建切面  3.1 AOP介绍  3.1.1 定义AOP术语  3.1.2 Spring的AOP...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part3

    而Spring Boot 是Spring 主推的基于“习惯优于配置”的原则,让你能够快速搭建应用的框架,从而使得Java EE 开发变得异常简单。 《JavaEE开发的颠覆者: Spring Boot实战》从Spring 基础、Spring MVC 基础讲起,从而...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part2

    而Spring Boot 是Spring 主推的基于“习惯优于配置”的原则,让你能够快速搭建应用的框架,从而使得Java EE 开发变得异常简单。 《JavaEE开发的颠覆者: Spring Boot实战》从Spring 基础、Spring MVC 基础讲起,从而...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part1

    而Spring Boot 是Spring 主推的基于“习惯优于配置”的原则,让你能够快速搭建应用的框架,从而使得Java EE 开发变得异常简单。 《JavaEE开发的颠覆者: Spring Boot实战》从Spring 基础、Spring MVC 基础讲起,从而...

    springboot中自定义异常以及定制异常界面实现过程解析

    主要介绍了springboot中自定义异常以及定制异常界面实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    cxf-spring-boot-starter:由Spring Boot和Apache CXF支持的企业和生产就绪的SOAP Web服务

    定制您自己的自定义SOAP错误,这些错误符合XML模式内部定义的异常 SOAP测试框架:使用XmlUtils可以简化JAX-B类处理工作,并使用SOAP Raw Client可以针对端点测试格式错误的XML 与JDK 8、9和11ff一起使用 文献资料 ...

    Java毕业设计-基于springboot开发的在线外卖系统-附毕设源代码+说明文档.rar

    学生可以根据自己的需求和兴趣,在原有功能的基础上进行二次开发和定制,添加新的功能模块或优化现有功能,实现自己的创意和想法。 总的来说,“基于Spring Boot开发的在线外卖系统”是一个集学习、实践和创新于...

    tgcloud-master:Spring云项目

    Spring Security OAuth 权限定制 前端权限控制到按钮级别 后端权限还在考虑是集中到网关还是放到各个微服务自行管理(待完成) 完全开源,持续更新 相关项目 功能 系统登陆 目前完成账号密码模式,可选短信验证码,...

    webx3框架指南PDF教程附学习Demo

    1.2.2. 剪裁和定制Webx ............................................................................ 7 1.3. 本章总结 ......................................................................................

Global site tag (gtag.js) - Google Analytics