Мне было интересно, это хорошая практика для return
из try
block?
package debug;
/**
*
* @author Owner
*/
public class Main {
public static void main(String[] args) {
System.out.println(fun());
}
static boolean cleanup() {
// Fail to cleanup.
return false;
}
static boolean fun() {
boolean everything_is_fine = true;
try {
System.out.println("open file stream");
return everything_is_fine;
} finally {
everything_is_fine = cleanup();
}
}
}
Я подумал, что false
будет напечатано. Однако вот вывод:
open file stream
true
Как вы можете видеть, если у меня есть оператор return
в блоке try
, я пропущу статус отказа во время очистки finally
.
Должен ли я иметь код как:
static boolean fun() {
boolean everything_is_fine = true;
try {
System.out.println("open file stream");
} finally {
everything_is_fine = cleanup();
}
return everything_is_fine;
}
Пока возвращается возвращаемое значение из блока finally, я должен избегать возврата из try?