理解goto語句的替代方式分析
曾幾何時(shí),goto是多么的讓牛人綻放他們高超的精湛技術(shù)
曾幾何時(shí),goto又變成了萬惡之首
曾幾何時(shí),goto只在教科書中的示例才會出現(xiàn)
有太多的理由不讓用goto,但有時(shí),我們又想使用goto的功能,怎么辦?
用try/catch/finally便可實(shí)現(xiàn)同等于goto的功能,來看二個(gè)示例:
復(fù)制代碼 代碼如下:
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
}
和:
復(fù)制代碼 代碼如下:
try {
// operation one
if (failed) {
return;
}
// operation two
if (failed) {
return;
}
// operation three
if (failed) {
return;
}
} finally {
// do something when failed
}
以上二段都等同于:
復(fù)制代碼 代碼如下:
// 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
用異常的方式有些暴力,但確實(shí)能正確的幫助實(shí)現(xiàn)類似goto的功能;用return和finally雖不是很暴力,但是比較難控制,因?yàn)樯婕暗絩eturn語句,它會在finally塊執(zhí)行后得以執(zhí)行,所以如果不想退出程序的`話,這個(gè)方法還不如用異常來控制。
另外,break, continue也是比較強(qiáng)大的跳轉(zhuǎn)語句,特別是break label和continue label,可以跳出一層循環(huán)或是多層循環(huán); 但是要注意一點(diǎn)的是break只能在循環(huán)語句和switch語句中使用,continue只能在循環(huán)語句中使用。所以它們的局限性也很大。
這個(gè)小示例說明,goto不單單是一個(gè)語句,它是一種解決問題的思路和編程習(xí)慣,習(xí)慣了它的人,或者是想用它的人,即使不用goto也會寫出類似goto邏輯出來。它的優(yōu)點(diǎn)是會更容易的幫助找出解決方案。它的缺點(diǎn)也是眾人皆知。但我們要避免的不單單是一個(gè)goto語句,而是這種“跳轉(zhuǎn)式”的解決思路和編程習(xí)慣。
【理解goto語句的替代方式分析】相關(guān)文章:
《易經(jīng)》的理解分析07-24
對《易經(jīng)》的理解分析01-15
《化石吟》課文的重點(diǎn)語句理解03-01
《木蘭詩》教材理解分析05-03
《化石吟》重點(diǎn)語句理解推薦03-01
《化石吟》重點(diǎn)語句分析11-21
課文孔乙己重點(diǎn)語句分析08-04
《別了,不列顛尼亞》課文理解分析08-31
歐陽修豐樂亭記閱讀理解及答案分析01-19