Java关键字finally
生活随笔
收集整理的這篇文章主要介紹了
Java关键字finally
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
參考文章:關于Java中finally語句塊的深度辨析?
僅考慮程序正常執(zhí)行的情況下,不考慮System.exit(0)等情況。不過關于“finally 語句塊一定會執(zhí)行嗎?”這個問題確實會有一定的說法。
1,無控制轉(zhuǎn)移語句,在return之前執(zhí)行
(1) try {System.out.println("try...");return; } catch (Exception e) {System.out.println("catch..."); } finally {System.out.println("finally..."); } output:會在try代碼塊return之前執(zhí)行 try... finally... (2) try {System.out.println("try...");throw new Exception(" "); } catch (Exception e) {System.out.println("catch...");return; } finally {System.out.println("finally..."); } output:會在catch代碼塊return之前執(zhí)行 try... catch... finally...?2,finally中有return?
(1) public class Demo{public static void main(String[] args) {System.out.println("result = " + test(10));}public static int test(int i) {try {System.out.println("try...");return i-1;} catch (Exception e) {System.out.println("catch...");return i-2;} finally {System.out.println("finally...");return i-4;}} } output:return的是6,finally中的結果 try... finally... result = 6 (2) public class Demo{public static void main(String[] args) {System.out.println("result = " + test(10));}public static int test(int i) {try {System.out.println("try...");throw new Exception();} catch (Exception e) {System.out.println("catch...");return i-2;} finally {System.out.println("finally...");return i-4;}} } output:return的是6,finally中的結果 try... catch... finally... result = 6 (3)finally中有無return,但是有運算 import java.util.HashMap; import java.util.Map;public class Demo{public static void main(String[] args) {System.out.println("result = " + test(10));}public static int test(int i) {Map<String, Object> map = new HashMap<String, Object>();map.put("Demo", "Demo"); try {System.out.println("try...");return i-1;} catch (Exception e) {System.out.println("catch...");return i-2;} finally {System.out.println("finally...");i = i-4;}} } output:return的是9,而不是10-4-1=5 try... finally... result = 9 (4)在finally中return import java.util.HashMap; import java.util.Map;public class Demo{public static void main(String[] args) {System.out.println("result = " + test(10));}public static int test(int i) {try {System.out.println("try...");return i-1;} catch (Exception e) {System.out.println("catch...");return i-2;} finally {System.out.println("finally...");return i-4;}} } output:與(1)(2)類似,直接return了 try... finally... result = 6 (5)在代碼塊外面return public class Demo{public static void main(String[] args) {System.out.println("result = " + test(10));}public static int test(int i) {try {System.out.println("try...");i--;} catch (Exception e) {System.out.println("catch...");return i-2;} finally {System.out.println("finally...");i = i - 4;}return i;} } output: try... finally... result = 5?
轉(zhuǎn)載于:https://www.cnblogs.com/lemon-now/p/5148131.html
總結
以上是生活随笔為你收集整理的Java关键字finally的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何防止用户重复提交表单
- 下一篇: jude的一些基本用法