社区
Java SE
帖子详情
我的connection.rollback()为什么必须用try..catch
sdyqingdao
2009-12-14 12:25:57
我抄官方的例子,
try{
....
}
catch (sqlexception e){
connection.rollback()
}
但编译不通过,说connection.rollback()抛出的异常应被被捕获.搞得我只好
try{
....
}
catch (sqlexception e)[
try{
connection.rollback()
}
catch....
}
...全文
376
8
打赏
收藏
我的connection.rollback()为什么必须用try..catch
我抄官方的例子, try{ .... } catch (sqlexception e){ connection.rollback() } 但编译不通过,说connection.rollback()抛出的异常应被被捕获.搞得我只好 try{ .... } catch (sqlexception e)[ try{ connection.rollback() } catch.... }
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
crazylaa
2009-12-14
打赏
举报
回复
对头,底层抛出的异常你必须捕获,必须这样,没的道理可言。
一定要道理,那只能说“玩啥,就得尊重啥玩意儿的规则”。
iamrf
2009-12-14
打赏
举报
回复
rollback需要捕获异常的原因,是因为只有当你在一个Transaction中的相关操作,如果有一步出现异常则发生回滚。但回滚是要有一些条件的,第一你这个Transaction必须是同一个,还有你的Connection不能关闭,如果在执行代码的时候发生了致命性错误,导致Connection意外关闭了,则这个Transaction是不能正确回滚的。当这些条件满足时才能进行回滚,所以rollback要加try{} catch(){}以保证如果出现意外情况事物不能回滚时的操作。
sean1203
2009-12-14
打赏
举报
回复
没错误怎么要rollback呢?
那当然是出异常
才来roll
捕获异常就是try catch
所以得
justinavril
2009-12-14
打赏
举报
回复
抛出SQLException,而它是一种checked exception,所以必须显示地捕获处理。
苍蝇①号
2009-12-14
打赏
举报
回复
自己补上就行了,可能是官网的疏忽也可能是你看的失误,总之能把问题搞定才是我们需要的
网站推广优化yetaoaiueo
2009-12-14
打赏
举报
回复
官方的代码楼主没看全
crazylaa
2009-12-14
打赏
举报
回复
官方的例子有可能只抄了其中一段。其实它在外面捕获了。比如
public static.... aa(){
try{
con.rollback()
}catch(Exception e){
。。。。
}
}
sdyqingdao
2009-12-14
打赏
举报
回复
为什么官方的例子不捕获呢?
[Quote=引用 1 楼 crazylaa 的回复:]
对头,底层抛出的异常你必须捕获,必须这样,没的道理可言。
一定要道理,那只能说“玩啥,就得尊重啥玩意儿的规则”。
[/Quote]
如果我不使用
connection
.
rollback
(),由于事务尚未提交,我可以看到数据库的数据也不会改变任何东西,那为什么我仍然需要使用
connection
.
rollback
()?
需要使用
connection
.
rollback
()
JDBC中处理MySQL事务回滚无效的问题
问题描述:代码没有报错,且在用来测试的 /by zero 异常处能够成功捕获异常,而后也成功执行了
rollback
()操作,但数据库并未成功回滚,已做的SQL语句操作都被执行了。 public static void main(String[] args) {
Connection
conn = null; PreparedStatement pstmt1 = null; PreparedStatement pstmt2 = null;
try
java jdbc commit_java – JDBC:只有当`con.commit`没有成功时,`con.
rollback
()`才有效吗?...
我是Java JDBC的新手,并开发了小型数据库应用程序.我正在学习O’Reilly – 使用JDBC和Java第2版进行数据库编程.con.
rollback
()只有在如果没有成功的情况下才有效吗?实际上我猜即使con.commit()成功,调用con.
rollback
()也会产生影响.这意味着将其用作“撤消”动作.我在con.commit()成功之后尝试调用con.
rollback
(),但它没有...
【Java踩坑】异常捕获
try
...
cat
ch
..中
cat
ch
被跳过
错误情形: 程序用于转账过程中测试报错情况下,通过
Connection
Utils.get
Connection
()获取到的
Connection
对SQL事务进行回滚操作。错误位置代码如下: public boolean transfer(String from, String to, double money) throws Exception {
Connection
connection
=
Connection
Utils.get
Connection
(); connectio
Connection
.setAutoCommit 实践
connection
.setAutoCommit
Java SE
62,634
社区成员
307,269
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章