有什么区别:
while( true ) {
try {
// something
} catch( Exception e ) {
break;
}
}
和
try {
while( true ) {
// something
// break; // eventually
}
} catch( Exception e ) {
}
前者是否在每次迭代时运行try-catch,或者编译器是否生成相同的代码。 哪个更受欢迎?
编辑:打破;因为没有必要,所以在第二个例子中从catch块中删除了。答案 0 :(得分:6)
不同的是,第一个将按预期编译和工作(发生异常时跳出循环),第二个将无法编译。
编译器错误将是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
关键字。