Ist es eine gute Praxis, eine return-Anweisung im try-Block zu haben, wenn der zurückgegebene Wert vom finally-Block betroffen ist
Ich habe mich gefragt, ist es eine gute Praxis,return
vontry
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();
}
}
}
Ich dachte zuerstfalse
wird gedruckt. Hier ist jedoch die Ausgabe:
open file stream
true
Wie Sie sehen können, wenn ich @ hareturn
Anweisung innerhalb vontry
Block, ich werde den Fehlerstatus während @ verpassfinally
Aufräumen
Soll ich den Code haben als:
static boolean fun() {
boolean everything_is_fine = true;
try {
System.out.println("open file stream");
} finally {
everything_is_fine = cleanup();
}
return everything_is_fine;
}
Solange der zurückgegebene Wert von finally block betroffen ist, soll ich die Rückgabe von try vermeiden?