如何忽略UI中的特定异常?

时间:2014-12-11 19:50:27

标签: java spring spring-mvc

如何让当前的Spring应用程序忽略UI上的特定异常类(比如NoUIException或OptimisticLockingException)但不影响日志记录?我知道org.springframework.web.servlet.handler.SimpleMappingExceptionResolver可以使用UI请求映射某些异常,但不知道如何在UI上避免使用。

更新

我在Spring网站上做了一些研究并提供了以下解决方案,我试过但它不起作用

@ControllerAdvice
public class ExceptionControllerAdvice {

    @ResponseStatus(value = HttpStatus.CONFLICT)
    @ExceptionHandler(org.apache.openjpa.persistence.OptimisticLockException.class)
    public void optimisticLockExceptionHandler() {
        // do nothing, just ignore the exception
        logger.info("yeah...no exception I hope !!!");
    }
}

UPDATE2

我不确定它是否相关,但我在mvc配置上下文中注册了SimpleMappingExceptionResolver

<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver" p:defaultErrorView="uncaughtException">
    <property name="exceptionMappings">
        <props>
            <prop key=".DataAccessException">dataAccessFailure</prop>
            <prop key=".AccessDeniedException">accessDenied</prop>
        </props>
    </property>
</bean>

SimpleMappingExceptionResolver是否有任何方式可能与controller advisor冲突?

2 个答案:

答案 0 :(得分:0)

异常处理程序由名为 ExceptionHandlerExceptionResolver HandlerExceptionResolver 调用。

确保您已正确配置组件扫描;必须扫描包含您的建议的包裹。不要忘记启用注释。

在Spring XML中:

<context:component-scan base-package="com.foo.bar" />
<mvc:annotation-driven>

在Spring启动时,使用@ComponentScan(http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/ComponentScan.html)。然后,您必须扩展类 WebMvcConfigurerAdapter 并指定解析器。那些解析器放在 HandlerExceptionResolverComposite 中。返回非空模型并查看获胜的第一个解析器。

答案 1 :(得分:0)

如果您不想显示特定异常的错误页面,请使用catch块捕获该异常,并且不要重新抛出任何特定于应用程序的异常。