[英]Java try-catch inside of while loop or outside
之間有什么區別?
while( true ) {
try {
// something
} catch( Exception e ) {
break;
}
}
和
try {
while( true ) {
// something
// break; // eventually
}
} catch( Exception e ) {
}
前者是在每次迭代中運行try-catch還是編譯器生成相同的代碼。 哪個是首選?
編輯:休息; 在第二個示例中,由於不需要,已將其從catch塊中刪除。
區別在於,第一個將按預期進行編譯和工作(發生異常時會跳出循環),而第二個則不會編譯。
編譯器錯誤是break cannot be used outside of a loop or a switch
這很容易解釋(您正在嘗試在語法外使用break
(語法上),這是不允許的)。
我將修改您的示例以說明這一點:
try {
while( true ) {
// something
// break; // eventually
}
/* --> more code, that could throw an exception <-- */
} catch( Exception e ) {
break;
}
如果在我插入評論的地方發生異常,應該打破什么?
明確回答您的問題:
前者是在每次迭代中運行try-catch還是編譯器生成相同的代碼?
是的,前者在每次迭代時都運行try / catch塊。
哪個是首選?
顯然,第一個。
首選方法是第二種方法,只是在catch塊中沒有break
關鍵字。 正如Ren在評論中所指出的那樣,當發生異常時,您將執行catch塊(記錄錯誤或類似的內容),然后執行catch塊下面的代碼。 不需要break
關鍵字。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.