Это хорошая практика иметь оператор return в блоке try, когда дело касается возвращаемого значения из блока finally
Мне было интересно, это хорошая практикаreturn
отtry
блок?
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?