繁体   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