/* * 思路: * 要想证明程序的运行流程,那么就可以使用myeclipse中加入断电,然后debug单步执行,那么怎么在代码中实现呢,也就说怎么使用代码来证明呢? * return是在finally执行后才返回的,且finally无法改变返回值 */ package com.itheima; public class Test5 { /** * 5、 用代码证明,在try中写了return,后面又写了finally,是先执行return还是先执行fianlly? * @param args */ public static void main(String[] args) throws Exception { System.out.println("第一种:"+tryTest1()); System.out.println("第二种:"+tryTest2()); System.out.println("第三种:"+tryTest3()); } //第一种方法,首先想到了利用数字来解决问题。想了想还是不能判断到底是先执行return还是先执行fianlly,只能来知道finally不能修改返回的值。 public static int tryTest1(){ int x = 0; try { x = 1; System.out.print("try中的x值为:"+x+"----"); return x; } catch (Exception e) { // 处理异常 }finally{ x = 2; System.out.print("finally中x值为:"+x+"----"); } return 0; } //第二种方法,想了想就使用StringBuilder来试着解决一下问题。在finally里面加入return。 public static String tryTest2() { String x = "try*****"; StringBuilder sb = new StringBuilder(); try { System.out.print("try1-----"); System.out.print("try2-----"); sb.append(x); return sb.toString(); } finally { sb.append("finally"); System.out.print("finally3"); //最后加入return return sb.toString(); } } //第三种方法,finally里面没有家人return。 public static String tryTest3() { String x = "try*****"; StringBuilder sb = new StringBuilder(); try { System.out.print("try1-----"); System.out.print("try2-----"); sb.append(x); return sb.toString(); } finally { sb.append("finally"); System.out.print("finally3"); //最后加入return //return sb.toString(); } } }