我发现使用 finally 有代码“返回后”的可能性,这里有一些例子:
int foo() {
BufferedReader br = ...;
try {
// cca 20 lines with 4 returns in different if-else clauses etc
//example:
if(something) {
return 0;
} else {
return 1;
}
} finally {
br.close();
}
}
作为(在我看来更懒惰)的替代性:
int foo() {
BufferedReader br = ...;
int toReturn;
// cca 20 lines with 4 ASSIGMENTS in different if-else clauses etc
//example:
if(something) {
toReturn = 0;
} else {
toReturn = 1;
}
br.close();
return toReturn;
}
所以,问题是,哪个更快,更具可读性,是的,在这种情况下,我真的关闭了一个 BufferedReader,所以是 try-finnaly 还是我使用错误的方式?