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?

Antworten auf die Frage(12)

Ihre Antwort auf die Frage