首页 > 编程知识 正文

java catch异常,java中this的用法

时间:2023-05-05 10:39:31 阅读:150243 作者:4773

首先,你说的“那么,保证try/catch块中的关键码不抛出异常就足够了”的话是“那么,保证try/catch块中的关键码不抛出异常就足够了”

再回答你的问题,保证不放弃异常是不可能实现的,所以是try,catch。 你对内容的理解有错误。

“通过异常的慢速从临界区域弹出,在临界区域代码结束之前请不要慢速异常。 finally子句可能会解除锁定,使对象处于损坏状态。”

" caution : becarefultoensurethatthecodeinacriticalsectionisnotbypassed "

bythrowinganexception.ifanexceptionisthrownbeforetheendofthesection、

thefinallyclausewillrelinquishthelock,but the object may be in a damaged

state."

描绘了这样的状况。

myLock.lock (;

try{

Object o=getObject (; //从主存储器读取对共享变量o的参照,向o的变更直接变更主存储器内的数据。 o.doSomeThingA (; //执行成功,o改变了o.doSomeThingB (; //抛出了异常的位置

}catch(exceptione ) {

是thrownewruntimeexception(e )

}finally{

myLock.unLock (;

}

上述代码位于异常位置,前往catch,解除锁定,直接抛出异常。

但是,我们已经运行了doSomeThingA (),更改了对象o,更新到了主存储器,o被污染了,也就是说处于可能的损伤状态。 @lgdxb

书的意思是,不要直接抛出异常,在抛出之前,必须进行撤消已经执行的更改的操作。

为什么使用finally是为了即使发生异常也能解除锁定。 当前线程不会永久保留锁,也不会永久阻止其他线程。 synchronized会在发生异常时自动解锁,但不能是您手动声明的Lcok对象。

以上因为是个人的理解,所以欢迎修正的指导。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。