为了能根据不同的情况做出不同的反应,我们可以让不同的情况抛出异常。
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以捕获异常,进行处理。!
分享到:
相关推荐
为了实现全局异常处理并返回JSON格式的数据,我们需要创建一个自定义的`JsonExceptionHandler`类,继承自`DefaultErrorWebExceptionHandler`,然后重写关键方法来实现定制化处理逻辑。 #### 三、自定义全局异常处理...
本文将深入探讨Spring MVC中的异常处理机制,帮助你更好地理解如何优雅地处理错误和异常。 1. **Spring MVC 异常处理概述** Spring MVC 提供了一种统一的方式来处理应用程序中抛出的异常。它通过`@...
这篇博文“Spring基于线程池的定时任务线程异常实践”深入探讨了如何在Spring中结合线程池来执行定时任务,并且特别关注了在实际应用中可能出现的异常情况以及如何处理。 首先,我们需要了解Spring的TaskExecutor...
在Spring MVC框架中,异常处理是一项关键任务,它确保了应用程序在遇到错误或异常时能够优雅地响应。本文将深入探讨Spring MVC中的异常处理机制,包括如何配置、自定义异常处理器以及异常转换策略。 首先,Spring ...
5. **WebMvcConfigurer**:通过实现`WebMvcConfigurer`接口,我们可以定制Spring MVC的行为,包括异常处理。例如,可以使用`addArgumentResolvers`或`addReturnValueHandlers`方法来添加自定义的异常解析器或返回值...
通过定制化日志策略,我们可以获取到丰富的异常信息,便于排查和修复问题。 6. **公共异常类**:为了规范化异常信息,通常会定义一个或多个公共异常类,比如`BusinessException`,它包含业务错误码和错误信息,这...
Spring Boot通过`logging`配置允许我们定制异常的日志级别和格式,以便更好地跟踪和诊断问题。 9. **单元测试异常处理** 在编写单元测试时,可以使用`assertThrows`或`expectThrows`断言来验证方法是否抛出预期的...
为了自定义全局异常处理,我们可以创建自己的`ErrorWebExceptionHandler`,覆盖`handle`方法,从而在出现异常时返回自定义的响应。以下是一个简单的实现示例: ```java @Component public class ...
6. **异常处理(Exception Handling)**:当安全规则不满足时,Spring Security会抛出相应的异常,你可以自定义这些异常的处理逻辑。 7. **表达式语言(Expression Language)**:Spring Security提供了一个强大的...
MyBatis-Spring是MyBatis与Spring框架整合的一个类库,它能将...同时,它也提供了一些扩展点,允许开发者根据自己的需求进行定制。在实现自定义功能时,可以参考MyBatis-Spring提供的核心组件和扩展机制进行开发。
同时,通过这种方式,我们可以为不同类型的异常定制不同的错误处理策略。 总结起来,通过Spring AOP的`ThrowsAdvice`,我们可以实现统一的日志记录和异常处理。日志记录帮助我们追踪和调试问题,而异常处理则让我们...
8. **异常处理**:当方法抛出异常时,Spring Cache可以配置是否将异常信息也存入缓存,或者是否清除已有的缓存项。 通过理解并应用上述概念和策略,你可以灵活地控制Spring Cache的行为,以优化应用程序性能,特别...
Spring Security是一个强大且高度可定制的身份验证和授权框架,用于保护Spring应用。 13. **Spring AOP中的通知(Advice)有哪些类型?** 包括前置通知(Before)、后置返回通知(After Returning)、异常通知...
`spring-core-4.3.10.RELEASE.jar`包含了Spring框架的基本核心工具类,如IoC(Inversion of Control)容器的实现,以及资源加载、异常处理和类型转换等基础功能。它是所有其他Spring模块的基础,提供了对反射和动态...
Spring Security 是一个强大的和高度可定制的身份验证和访问控制框架,专为Java应用程序设计。它在Spring生态系统中扮演着核心安全组件的角色,使得开发者能够轻松地实现安全性需求,包括用户认证、授权、会话管理...
5. **异常处理(Exception Handling)**:Spring Security 自带了一套完整的异常处理机制,包括未授权和未认证的异常。通过自定义`AccessDeniedHandler`和`AuthenticationEntryPoint`,你可以控制用户在访问受限资源...
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. ...
12. 异常翻译:Spring Data Elasticsearch可以将Elasticsearch的原生异常翻译成Spring Data的异常体系,便于在Spring框架内进行错误处理和异常管理。 Spring Data Elasticsearch的目标是为Java开发者提供一个简单、...
对于更复杂和个性化的异常处理,开发者可以实现Spring的HandlerExceptionResolver接口,创建自己的异常处理器。自定义处理器提供更大的灵活性,可以在处理异常时执行任何必要的逻辑,如记录日志、发送报警邮件等,...
2. **配置Spring Security**:创建一个配置类,继承自`WebSecurityConfigurerAdapter`,并覆盖其方法以定制安全行为。例如,你可以定义哪些URL需要保护,以及如何进行认证和授权。 3. **定义认证和授权策略**:实现...