try、catch、finallyがreturnを返す問題について

1550 ワード

1つ目のケース:
public static void main(String[] args) {
	System.out.println(print());
}

@SuppressWarnings("finally")
public static String print() {
	try {
		System.out.println("------try------");
		return "try";
	} finally {
		System.out.println("------finally------");
		return "finally";
	}
}

実行結果:
------try------
------finally------
finally

2つ目のケース:
public static void main(String[] args) {
	System.out.println(print());
}

@SuppressWarnings("finally")
public static String print() {
	try {
		System.out.println("------try------");
		int i = 10;
		int j = i / 0;
		return "try";
	} catch (Exception e) {
		System.out.println("------catch------");
		return "catch";
	} finally {
		System.out.println("------finally------");
		return "finally";
	}
}

実行結果:
------try------
------catch------
------finally------
finally

3つ目のケース:
public static void main(String[] args) {
	System.out.println(print());
}

public static String print() {
	try {
		System.out.println("------try------");
		int i = 10;
		int j = i / 0;
		return "try";
	} catch (Exception e) {
		System.out.println("------catch------");
		return "catch";
	} finally {
		System.out.println("------finally------");
	}
}

実行結果:
------try------
------catch------
------finally------
catch