`
bluerose
  • 浏览: 146872 次
  • 性别: 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 Cloud Gateway的全局异常处理

    为了实现全局异常处理并返回JSON格式的数据,我们需要创建一个自定义的`JsonExceptionHandler`类,继承自`DefaultErrorWebExceptionHandler`,然后重写关键方法来实现定制化处理逻辑。 #### 三、自定义全局异常处理...

    spring mvc异常处理

    本文将深入探讨Spring MVC中的异常处理机制,帮助你更好地理解如何优雅地处理错误和异常。 1. **Spring MVC 异常处理概述** Spring MVC 提供了一种统一的方式来处理应用程序中抛出的异常。它通过`@...

    Spring基于线程池的定时任务线挰异常实践

    这篇博文“Spring基于线程池的定时任务线程异常实践”深入探讨了如何在Spring中结合线程池来执行定时任务,并且特别关注了在实际应用中可能出现的异常情况以及如何处理。 首先,我们需要了解Spring的TaskExecutor...

    spring mvc异常简单处理

    在Spring MVC框架中,异常处理是一项关键任务,它确保了应用程序在遇到错误或异常时能够优雅地响应。本文将深入探讨Spring MVC中的异常处理机制,包括如何配置、自定义异常处理器以及异常转换策略。 首先,Spring ...

    spring boot 异常处理方案

    5. **WebMvcConfigurer**:通过实现`WebMvcConfigurer`接口,我们可以定制Spring MVC的行为,包括异常处理。例如,可以使用`addArgumentResolvers`或`addReturnValueHandlers`方法来添加自定义的异常解析器或返回值...

    业务异常提示处理 springboot+Assert(自定义断言)

    通过定制化日志策略,我们可以获取到丰富的异常信息,便于排查和修复问题。 6. **公共异常类**:为了规范化异常信息,通常会定义一个或多个公共异常类,比如`BusinessException`,它包含业务错误码和错误信息,这...

    spring boot exception handler.zip

    Spring Boot通过`logging`配置允许我们定制异常的日志级别和格式,以便更好地跟踪和诊断问题。 9. **单元测试异常处理** 在编写单元测试时,可以使用`assertThrows`或`expectThrows`断言来验证方法是否抛出预期的...

    Spring Cloud Gateway全局通用异常处理的实现

    为了自定义全局异常处理,我们可以创建自己的`ErrorWebExceptionHandler`,覆盖`handle`方法,从而在出现异常时返回自定义的响应。以下是一个简单的实现示例: ```java @Component public class ...

    spring_springweb_

    6. **异常处理(Exception Handling)**:当安全规则不满足时,Spring Security会抛出相应的异常,你可以自定义这些异常的处理逻辑。 7. **表达式语言(Expression Language)**:Spring Security提供了一个强大的...

    mybatis-spring中文文档

    MyBatis-Spring是MyBatis与Spring框架整合的一个类库,它能将...同时,它也提供了一些扩展点,允许开发者根据自己的需求进行定制。在实现自定义功能时,可以参考MyBatis-Spring提供的核心组件和扩展机制进行开发。

    spring统一异常与日志管理

    同时,通过这种方式,我们可以为不同类型的异常定制不同的错误处理策略。 总结起来,通过Spring AOP的`ThrowsAdvice`,我们可以实现统一的日志记录和异常处理。日志记录帮助我们追踪和调试问题,而异常处理则让我们...

    spring-cache(通过key值更新缓存)

    8. **异常处理**:当方法抛出异常时,Spring Cache可以配置是否将异常信息也存入缓存,或者是否清除已有的缓存项。 通过理解并应用上述概念和策略,你可以灵活地控制Spring Cache的行为,以优化应用程序性能,特别...

    25个经典的Spring面试问题包含答案

    Spring Security是一个强大且高度可定制的身份验证和授权框架,用于保护Spring应用。 13. **Spring AOP中的通知(Advice)有哪些类型?** 包括前置通知(Before)、后置返回通知(After Returning)、异常通知...

    spring4.3.10的所有jar包

    `spring-core-4.3.10.RELEASE.jar`包含了Spring框架的基本核心工具类,如IoC(Inversion of Control)容器的实现,以及资源加载、异常处理和类型转换等基础功能。它是所有其他Spring模块的基础,提供了对反射和动态...

    spring_security_3.1

    Spring Security 是一个强大的和高度可定制的身份验证和访问控制框架,专为Java应用程序设计。它在Spring生态系统中扮演着核心安全组件的角色,使得开发者能够轻松地实现安全性需求,包括用户认证、授权、会话管理...

    spring security 3 demos

    5. **异常处理(Exception Handling)**:Spring Security 自带了一套完整的异常处理机制,包括未授权和未认证的异常。通过自定义`AccessDeniedHandler`和`AuthenticationEntryPoint`,你可以控制用户在访问受限资源...

    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-data-elasticsearch

    12. 异常翻译:Spring Data Elasticsearch可以将Elasticsearch的原生异常翻译成Spring Data的异常体系,便于在Spring框架内进行错误处理和异常管理。 Spring Data Elasticsearch的目标是为Java开发者提供一个简单、...

    springmvc 异常统一处理的三种方式详解.docx

    对于更复杂和个性化的异常处理,开发者可以实现Spring的HandlerExceptionResolver接口,创建自己的异常处理器。自定义处理器提供更大的灵活性,可以在处理异常时执行任何必要的逻辑,如记录日志、发送报警邮件等,...

    Spring集成SpringSecurity依赖包

    2. **配置Spring Security**:创建一个配置类,继承自`WebSecurityConfigurerAdapter`,并覆盖其方法以定制安全行为。例如,你可以定义哪些URL需要保护,以及如何进行认证和授权。 3. **定义认证和授权策略**:实现...

Global site tag (gtag.js) - Google Analytics