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