如何让当前的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 !!!");
}
}
我不确定它是否相关,但我在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
冲突?
答案 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块捕获该异常,并且不要重新抛出任何特定于应用程序的异常。