Javaにおけるfinallyとreturnの関係実例解析
本論文の研究は主にJavaにおけるfinallyとreturnの関係であり、具体的な紹介と実例は以下の通りである。
finallyとreturn関係のまとめ
1.tryブロックにはSystem.exit(0)という語句があります。Java仮想マシンJVMを終了したので、JVMさえ停止しました。すべて終了しました。もちろんfinally文も実行されません。
2.その他の場合、finally文は必ず実行されます。したがって、ここではいくつかのリソースの解放動作が実行され得る。
(1)finallyのreturnはtry/catchのrenturnを上書きします。
(2)finallyにreturn文を書くと警告があります。関数が異常を出すのを阻止するので、正常な戻りに変えます。
締め括りをつける
以上がJavaにおけるfinallyとreturnの関係例解析のすべての内容です。興味のある方は引き続き当駅の他のテーマを参照してください。友達のサポートに感謝します。
finallyとreturn関係のまとめ
1.tryブロックにはSystem.exit(0)という語句があります。Java仮想マシンJVMを終了したので、JVMさえ停止しました。すべて終了しました。もちろんfinally文も実行されません。
2.その他の場合、finally文は必ず実行されます。したがって、ここではいくつかのリソースの解放動作が実行され得る。
(1)finallyのreturnはtry/catchのrenturnを上書きします。
(2)finallyにreturn文を書くと警告があります。関数が異常を出すのを阻止するので、正常な戻りに変えます。
package com.demo.test;
public class FinallyAndReturn {
private static void finallyAndTryReturn() {
try {
System.out.println("finallyAndTryReturn -> try");
return;
}
catch (Exception e) {
System.out.println("finallyAndTryReturn -> catch");
}
finally {
System.out.println("finallyAndTryReturn -> finally");
}
}
private static void finallyAndCatchReturn() {
try {
System.out.println("finallyAndCatchReturn -> try");
throw new Exception();
}
catch (Exception e) {
System.out.println("finallyAndCatchReturn -> catch");
return;
}
finally {
System.out.println("finallyAndCatchReturn -> finally");
}
}
// finally try return ,return 。
private static String tryReturn() {
String str = "initialized";
try {
System.out.println("tryReturn -> try");
str = "try";
return str;
}
catch (Exception e) {
System.out.println("tryReturn -> catch");
str = "catch";
}
finally {
System.out.println("tryReturn -> finally");
str = "finally";
}
return null;
}
private static String tryReturnAndFinallyReturn() {
String str = "initialized";
try {
System.out.println("tryReturnAndFinallyReturn -> try");
str = "try";
return str;
}
catch (Exception e) {
System.out.println("tryReturnAndFinallyReturn -> catch");
str = "catch";
}
finally {
System.out.println("tryReturnAndFinallyReturn -> finally");
/*
* Warning: finally block does not complete normally
* finally return , catch , catch , finally , 。
*/
str = "finally";
return str;
}
}
private static String tryThrowAndFinallyReturn() throws Exception {
String str = "initialized";
try {
System.out.println("tryThrowAndFinallyReturn -> try");
str = "try";
throw new Exception();
}
catch (Exception e) {
System.out.println("tryThrowAndFinallyReturn -> catch");
str = "catch";
throw new Exception();
}
finally {
System.out.println("tryThrowAndFinallyReturn -> finally");
/*
* Warning: finally block does not complete normally
* finally return , catch , catch , finally , 。
*/
str = "finally";
return str;
}
}
private static void finallyAndRuntimeException() {
try {
System.out.println("finallyAndRuntimeException -> try");
throw new RuntimeException();
}
catch (Exception e) {
System.out.println("finallyAndRuntimeException -> catch");
}
finally {
System.out.println("finallyAndRuntimeException -> finally");
}
}
private static void finallyAndExit() {
try {
System.out.println("finallyAndExit -> try");
// System.exit(0); Java JVM , JVM , , finally 。
System.exit(0);
}
catch (Exception e) {
System.out.println("finallyAndExit -> catch");
}
finally {
System.out.println("finallyAndExit -> finally");
}
}
public static void main(String[] args) {
finallyAndTryReturn();
System.out.println();
finallyAndCatchReturn();
System.out.println();
System.out.println("tryReturn return -> " + tryReturn());
System.out.println();
System.out.println("tryReturnAndFinallyReturn return -> " + tryReturnAndFinallyReturn());
System.out.println();
try {
System.out.println("tryThrowAndFinallyReturn return -> " + tryThrowAndFinallyReturn());
}
catch (Exception e) {
e.printStackTrace();
}
System.out.println();
finallyAndRuntimeException();
System.out.println();
finallyAndExit();
}
}
プレゼンテーションの結果:締め括りをつける
以上がJavaにおけるfinallyとreturnの関係例解析のすべての内容です。興味のある方は引き続き当駅の他のテーマを参照してください。友達のサポートに感謝します。