簡體   English   中英

Java try-catch在while循環內部或外部

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM