理解goto语句的替代方式分析
曾几何时,goto是多么的让牛人绽放他们高超的精湛技术
曾几何时,goto又变成了万恶之首
曾几何时,goto只在教科书中的示例才会出现
有太多的理由不让用goto,但有时,我们又想使用goto的功能,怎么办?
用try/catch/finally便可实现同等于goto的功能,来看二个示例:
复制代码 代码如下:
try {
// operation one
if (failed) {
throw Exception;
}
// operation two
if (failed) {
throw Exception;
}
// operation three
if (failed) {
throw Exception;
}
} catch (Exception e) {
// do something when cases failed
}
和:
复制代码 代码如下:
try {
// operation one
if (failed) {
return;
}
// operation two
if (failed) {
return;
}
// operation three
if (failed) {
return;
}
} finally {
// do something when failed
}
以上二段都等同于:
复制代码 代码如下:
// operation one
if (failed) {
goto when_failed;
}
// operation one
if (failed) {
goto when_failed;
}
// operation one
if (failed) {
goto when_failed;
}
when_failed:
// do something when failed
用异常的方式有些暴力,但确实能正确的帮助实现类似goto的功能;用return和finally虽不是很暴力,但是比较难控制,因为涉及到return语句,它会在finally块执行后得以执行,所以如果不想退出程序的`话,这个方法还不如用异常来控制。
另外,break, continue也是比较强大的跳转语句,特别是break label和continue label,可以跳出一层循环或是多层循环; 但是要注意一点的是break只能在循环语句和switch语句中使用,continue只能在循环语句中使用。所以它们的局限性也很大。
这个小示例说明,goto不单单是一个语句,它是一种解决问题的思路和编程习惯,习惯了它的人,或者是想用它的人,即使不用goto也会写出类似goto逻辑出来。它的优点是会更容易的帮助找出解决方案。它的缺点也是众人皆知。但我们要避免的不单单是一个goto语句,而是这种“跳转式”的解决思路和编程习惯。
贵州高考排名175790左右排位理科可以上哪些大学,具体能上什么大学
山东高考排名557870左右排位综合可以上哪些大学,具体能上什么大学
河南高考排名447200左右排位理科可以上哪些大学,具体能上什么大学
辽宁高考排名97440左右排位物理可以上哪些大学,具体能上什么大学
长春工程学院的水电站设备安装与管理专业排名怎么样 附历年录戎数线
河南高考排名33600左右排位文科可以上哪些大学,具体能上什么大学
湖北高考排名85110左右排位历史可以上哪些大学,具体能上什么大学
河南高考排名321010左右排位文科可以上哪些大学,具体能上什么大学
甘肃高考排名25240左右排位理科可以上哪些大学,具体能上什么大学
四川高考排名277320左右排位理科可以上哪些大学,具体能上什么大学
湖北高考排名108880左右排位物理可以上哪些大学,具体能上什么大学
三亚城市职业学院和漳州理工职业学院哪个好 附对比和区别排名
江西洪州职业学院和无锡职业技术学院哪个好 附对比和区别排名
江西高考排名134360左右排位理科可以上哪些大学,具体能上什么大学
河北高考排名247720左右排位物理可以上哪些大学,具体能上什么大学
河北高考排名47100左右排位历史可以上哪些大学,具体能上什么大学
三门峡职业技术学院的助产专业排名怎么样 附历年录戎数线
江西高考排名105250左右排位文科可以上哪些大学,具体能上什么大学
安徽高考排名38080左右排位文科可以上哪些大学,具体能上什么大学
黑龙江东方学院和广东石油化工学院哪个好 附对比和区别排名
古典唯美的句子汇编
关于古典唯美的句子
关于羡慕的古风句子20
古风句子82句
默默守护的古风句子
网络搞笑经典语句精选
教师节给老师的祝福语
关于希望的唯美语句大全
当我哭泣时的语句
关于情侣生活的经典语句
温暖的经典情感语句
搞笑的教师节祝福语
最新社会处事的经典语句
描述爱情的语句
关于描写神态的优秀语句有哪些