do{}while(false);在java中的妙用.

本文探讨了在Java编程中如何优雅地处理异常情况,特别是在多个条件分支中重复执行相同清理操作的问题。作者介绍了使用`do{}

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在以前写C程序中经常会有这样的情景.

 

打开一个资源的句柄.

 

在打开的这个资源上操作进行多次操作,每一步失败都要关闭这个资源句柄并摧毁它:

if(x1) { close(hd);destory(hd);}

if(x2) { close(hd);destory(hd);}

if(x3) { close(hd);destory(hd);}

等等,如果操作超过3条语句,比如有七八条头十头语句,第个条件分支中都写相同的代码,至少从视觉上感觉自己是一个入门者.

于是C程序会把这些操作写到一个地方加标号,然后每个条件分支中goto过去就行了.

 

但是在java中,goto肯定不行,有人会把相同的操作封装到一个方法中.每个条件分支中调用这个方法.这当然不失为为一个优雅的方法.

但是...............................

这些共同操作中所要操作的所有变量要作为参数传给方法.而有些参数传递并不是一件容易的事.特别是内部类的参数传递.

 

那么有什么方法可以象C的goto那样呢?在一定条件下跳过下面的操作直接转到共同的操作代码?

 

do{}while(false);就可以非常方便地解决这个问题,就实就是利用循环控制的break来跳过下面的操作直接转到循环外来操作.

而把不是循环的逻辑用循环封装起来,那么"只循环一次"就解决的方法,当然你用for(int i=0;i<1;i++){}也行.用

while(true){ }然后最后在{}里的最后一行加break也行,但从优雅的角度说do{}while(false);最好,好最符合它设计的"至少执行一次"

的原意.

 

 

do{

    其它运算语句;

    if(x1) break;

     其它运算语句;

    if(x2) break;  

}while(false);

共同操作语句;

 

 

如果满足x1条件,则流程直接转到共同操作语句执行.起到了goto的作用.

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值