public class TryTest {
2.
3. /**
4. * @param args
5. */
6.
7. public static void main(String[] args) {
8. // TODO Auto-generated method stub
9. System.out.println("the result :"+new TryTest().TryTest()+new TryTest().fande());
10. }
11. static int TryTest(){
12. int x=1;
13. try {
14. System.out.println("---");
15. return x;
16. } catch (Exception e) {
17. // TODO: handle exception
18. e.printStackTrace();
19. }
20. finally{
21. x++;
22. System.out.println("sssss:"+x);
23. return 15;
24. }
25.
26.
27. }
28. public int fande(){
29. try{
30. System.out.println("try");
31. return 8;
32. }
33. finally{
34. System.out.println("finally");
35. return 9;
36.
37. }
38. }
39.}
当我们使用try函数的时候。return并不是直接返回值给用户,而是将结果先存放到值栈中,到最后finally执行结束后才真正的返回。但是执行顺序还是依旧按照try-catch-finally来执行的。先看第一个函数的输出结果
应该是:---
sssss:2
the result:15
函数fande中的执行结果是:
try
finally
9
其实这个答案原因很简单,就是我们存储的值的位置不一样,finally直接执行完后才将值返回,这时的结果才是正确的!!!