开发者社区> 问答> 正文

Dao层 service层捕获不到异常是怎么回事?

我插入一条数据,故意让其逐渐重复 错误不知道为何只报了action层的错误,dao层的和service层的没追踪到。

 public void add(UserEntity userEntity) throws RuntimeException { 
        Session session = sessionFactory.getCurrentSession(); 
        logger.info("add: userId=" + userEntity.getUserId()); 
        try { 
            session.save(userEntity); 
        } catch (RuntimeException e) { 
            // 这里catch不到 
        } 
    }
严重: Exception occurred during processing request: Duplicate entry '2' for key 'PRIMARY'; SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: Duplicate entry '2' for key 'PRIMARY'
org.springframework.dao.DataIntegrityViolationException: Duplicate entry '2' for key 'PRIMARY'; SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: Duplicate entry '2' for key 'PRIMARY'
at org.springframework.orm.hibernate4.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:138)
at org.springframework.orm.hibernate4.HibernateTransactionManager.convertHibernateAccessException(HibernateTransactionManager.java:594)
at org.springframework.orm.hibernate4.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:476)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723)
at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:392)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:120)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy19.add(Unknown Source)
at com.blog.actions.LoginAction.check(LoginAction.java:72)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)

展开
收起
爵霸 2016-03-04 09:36:02 5016 0
2 条回答
写回答
取消 提交回答
  • 这些异常是在提交事物的时候报出的,所以不能在service或者dao中不会到

    2019-07-17 18:51:49
    赞同 展开评论 打赏
  • 你的异常既throws又try,没必要吧。要不把throws给去掉试试

    2019-07-17 18:51:49
    赞同 展开评论 打赏
问答分类:
SQL
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载