JAVAはtry内でreturnがfinishを実行するかどうか

1338 ワード

1.まずtryでreturnを試して、finallyが実行できるかどうかを見て、テストコードは以下の通りです.
public class FinallyTest {
結果は次のとおりです.
public String returnString() {
String str;
try {
str = "Hello, William";
System.out.println("This is try block.");
return str;
}
catch(Exception e) {
System.out.println("This is catch block.");
}
finally {
System.out.println("This is finally block.");
}
return null;
}
}
This is try block.
This is finally block.
tryにreturnがあるかどうかにかかわらず、finallyは最終的に実行されることがわかります.
2.しかしtryではSystem.exit(0)、finallyは実行されますか?次のようにテストコードを入力します.
public class FinallyTest1 {
結果は次のとおりです.
public static String returnString() {
 
  String str;
  try {
   str = "This is try block.";
   System.out.println(str);
   System.exit(0);
  }
  catch(Exception e) {
   System.out.println("This is catch block.");
  }
  finally {
   System.out.println("This is finally block.");
  }
  return null;
}
}
This is try block.
この場合、finallyはまだ実行されていないので、プログラムは終了します.この場合、プログラムが終了する前にコードを実行したい場合は、addShutdownHookという関数を参照してください.具体的にこの関数の使い方は、別のブログで詳しく説明します.