代码之家  ›  专栏  ›  技术社区  ›  Jeff Foster

休眠验证程序异常

  •  1
  • Jeff Foster  · 技术社区  · 16 年前

    我正在使用EJB和SpringMVC的应用程序中使用Hibernate验证器。我使用的是JBoss5、Hibernate3和SpringMVC版本3。

    我想尝试在Spring异常解决程序级别捕获验证异常,并基于 InvalidStateException 消息。我不想将异常处理逻辑放在数据访问层中;我希望它由注释驱动,并且只在一个集中的地方处理验证错误。

    正在正确验证域模型,类型为的异常 无效状态异常 当我试图创建一个无效的实体(例如违反字段的长度约束)时,会如预期的那样抛出。在尝试捕捉Spring异常解析器实例中的异常时,我发现原来的异常已经消失,并且 javax.ejb.EJBTransactionRolledbackException 已经取代了它。原始异常不在“原因列表”中。

    我的第一个猜测是 org.hibernate.validator.InvalidStateException 没有注释 ApplicationException ,因此我安装了一个Hibernate事件侦听器,捕获了原始异常,并将其作为注释为 应用程序异常 . 这没有效果。

    另一个复杂性是,Web层通过远程接口调用EJB。我用注释说明了我的异常类 WebFault 但无济于事。

    我应该怎么做才能确保异常气泡一直上升?

    1 回复  |  直到 16 年前
        1
  •  2
  •   Bozho    16 年前

    试试这个?

    受保护的InvalidStateException ExtractValidationException(Throwable Ex){ 可抛E=Ex; (e)!{NULL){ if(e invalidStateException实例){ 返回(验证例外)e; }else if(e ejbException实例){ e=(ejbException)e).getcausedbyException(); }否则{ e=e.getcause(); } } 返回空; }

    推荐文章