搜尋

首頁  >  問答  >  主體

java - spring 事务catch,service捕获不到异常,controller能捕获问题

@Transactional
public void save(User user) throws Exception{
    try {
        for (int i = 0;i < 5;i++){
            apiService.createUser();//在权限系统创建用户以http形式
            user.setUserName(“”);
            user.setPassWord(null);
            userDao.save(user);
             System.out.print("继续执行"+i);
        }
    } catch (Exception e) {
        System.out.print("service进来了");
    }
    
    
    公司 架构是spring+spring data jpa+springmvc
    在执行save方法时
    问题一:理论上在循环第一次已经异常不应该继续往下执行,但是会继续循环五次
    问题二:在service中不会进入catch,而在controller中可以,如果我在循环中throw new RuntimeException()异常service进入catch,如果我删除事务注解,没问题进入catch.
    感觉很奇怪,求指点
    
    
PHPzPHPz2921 天前374

全部回覆(2)我來回復

  • 巴扎黑

    巴扎黑2017-04-18 10:35:55

    異常訊息是啥?事務用了代理執行,可能代理過程可能發生了錯誤。這樣service裡就抓不了錯誤,上拋給controller了

    回覆
    0
  • ringa_lee

    ringa_lee2017-04-18 10:35:55

    忘記了上來回復了,其實是spring data jpa 在執行save操作時是把資料緩存起來,沒有提交到資料庫需要flush掉就可以捕獲異常了

    回覆
    0
  • 取消回覆