/*
* 思路:
* 要想证明程序的运行流程,那么就可以使用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();
}
}
}