Java趣味分享:try & finally
程序员文章站
2022-04-06 13:17:16
考虑以下四个测试方法,它们会输出什么? 答案如下: 1 0 u1 u2 结论 1、不管try,finally都会执行; 2、在try中return,在finally执行前会把结果保存起来,即使在finally中有修改也以try中保存的值为准,但如果是引用类型,修改的属性会以finally修改后的为准 ......
考虑以下四个测试方法,它们会输出什么?
public class test { public static void main(string\[\] args) { system.out.println(test1()); system.out.println(test2()); system.out.println(test3()); system.out.println(test4()); } private static int test1() { int i = 1; try { return i; } catch (exception e) { e.printstacktrace(); } finally { i = 0; } return i; } private static int test2() { int i = 1; try { return i; } catch (exception e) { e.printstacktrace(); } finally { i = 0; return i; } } private static user test3() { user user = new user("u1"); try { return user; } catch (exception e) { e.printstacktrace(); } finally { user = new user("u2"); } return null; } private static user test4() { user user = new user("u1"); try { return user; } catch (exception e) { e.printstacktrace(); } finally { user.setname("u2"); } return null; } } public class user { public user(string name) { this.name = name; } private string name; public string getname() { return name; } public void setname(string name) { this.name = name; } @override public string tostring() { return name; } }
答案如下:
1
0
u1
u2
结论
1、不管try,finally都会执行;
2、在try中return,在finally执行前会把结果保存起来,即使在finally中有修改也以try中保存的值为准,但如果是引用类型,修改的属性会以finally修改后的为准;
3、如果try/finally都有return,直接返回finally中的return。
推荐去我的博客阅读更多:
2.spring mvc、spring boot、spring cloud 系列教程
3.maven、git、eclipse、intellij idea 系列工具教程
觉得不错,别忘了点赞+转发哦!
下一篇: 犀利的刀子嘴,一个比一个损
推荐阅读
-
Java中try..catch..finally语句的使用
-
Java编程中异常处理 try-catch-finally语句的一些分析
-
Java趣味分享:try & finally
-
Java常见问题 try-catch-finally异常处理总结
-
Java语言编程中try-catch-finally如何使用
-
关于java异常try catch finally的一道题
-
JAVA--异常基础介绍 try-catch-finally和throws基础讲解
-
Java中try..catch..finally语句的使用
-
Java的异常处理:try-catch-finally throws throw
-
java的异常处理try, catch,throw,throws和finally