各位大神,小弟有个问题请教

Drawing_blank 2018-02-13 01:55:07
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
try {
if (i == 3) {
throw new RuntimeException();// 这里时数据库操作发生的一个异常
}
System.out.println(i);
} catch (Exception e) {
e.printStackTrace();
}
}
for(int i=0;i<5;i++) {
try {
if(i==3) {
throw new RuntimeException();//另外一个数据库操作异常
}
}catch(Exception e) {
e.printStackTrace();
}

}

}

以上代码当第一个异常发生并捕获时,为何第二个for循环所有的数据库操作都失败了,大神求解
...全文
1370 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Drawing_blank 2018-02-18
  • 打赏
  • 举报
回复
引用 10楼OutMicro 的回复:
你把这些操作都放一个事物里面了吧? 第一个异常,事务回滚,余下的并不会执行。
我断点进去,第二个循环里的保存或更新操作都走到了,也没有报什么错,但是就是最后没效果。
o魅影0 2018-02-18
  • 打赏
  • 举报
回复
引用 11 楼 Drawing_blank 的回复:
[quote=引用 10楼OutMicro 的回复:]你把这些操作都放一个事物里面了吧? 第一个异常,事务回滚,余下的并不会执行。
我断点进去,第二个循环里的保存或更新操作都走到了,也没有报什么错,但是就是最后没效果。[/quote] 代码里走到了,但在数据库提交的时候会回滚。 不知道你的项目配置里是否全局开启了事务 尝试在方法上用注解声明不使用事务管理再试
OutMicro 2018-02-18
  • 打赏
  • 举报
回复
你把这些操作都放一个事物里面了吧? 第一个异常,事务回滚,余下的并不会执行。
Drawing_blank 2018-02-16
  • 打赏
  • 举报
回复
引用 8楼soton_dolphin 的回复:
[quote=引用 7 楼 Drawing_blank 的回复:] [quote=引用 2楼soton_dolphin 的回复:]什么叫 “为何第二个for循环所有的数据库操作都失败了” 第二个for循环里也有异常发生啊
但是第二个只是抛出了一次异常,应该其他的几次的数据库操作应该成功才是,我实际项目里是做数据库保存操作的[/quote] 第一次发生异常之后,有没有关闭数据库的连接?或者有其他异常处理机制把数据库断开了?[/quote]持久层框架用的是hibernate,发生异常只是简单的记录日志,没有做其他任何处理,其实在第一个for循环里只是查询数据库,没有做更新或者保存操作
soton_dolphin 2018-02-15
  • 打赏
  • 举报
回复
引用 7 楼 Drawing_blank 的回复:
[quote=引用 2楼soton_dolphin 的回复:]什么叫 “为何第二个for循环所有的数据库操作都失败了” 第二个for循环里也有异常发生啊
但是第二个只是抛出了一次异常,应该其他的几次的数据库操作应该成功才是,我实际项目里是做数据库保存操作的[/quote] 第一次发生异常之后,有没有关闭数据库的连接?或者有其他异常处理机制把数据库断开了?
Drawing_blank 2018-02-15
  • 打赏
  • 举报
回复
引用 3楼oyljerry 的回复:
第一个异常了,第二次的时候数据库连接已经有问题了。
大神那应该怎么写
Drawing_blank 2018-02-15
  • 打赏
  • 举报
回复
引用 4楼小钻风寻大观园 的回复:
因为你第二个循环里面也有抓异常啊! 如果你说为什么第二个循环没输出的话,那是因为你没有System.out.println(i);
忘了打了,第二个也是可以输出的,就是在第二第二个循环里所有的数据库操作都失败了
Drawing_blank 2018-02-15
  • 打赏
  • 举报
回复
引用 2楼soton_dolphin 的回复:
什么叫 “为何第二个for循环所有的数据库操作都失败了” 第二个for循环里也有异常发生啊
但是第二个只是抛出了一次异常,应该其他的几次的数据库操作应该成功才是,我实际项目里是做数据库保存操作的
  • 打赏
  • 举报
回复
因为你第二个循环里面也有抓异常啊! 如果你说为什么第二个循环没输出的话,那是因为你没有System.out.println(i);
oyljerry 2018-02-13
  • 打赏
  • 举报
回复
第一个异常了,第二次的时候数据库连接已经有问题了。
soton_dolphin 2018-02-13
  • 打赏
  • 举报
回复
什么叫 “为何第二个for循环所有的数据库操作都失败了” 第二个for循环里也有异常发生啊
xwn_2016 2018-02-13
  • 打赏
  • 举报
回复
不用throw new RuntimeException();试试

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧