黑马程序员技术交流社区

标题: 异常 [打印本页]

作者: lts0616    时间: 2015-12-30 19:54
标题: 异常
public class Demo_Finally {
        public static void main(String[] args) {
         foo(1); //输出结果是?
                 foo(2); //输出结果是?
                System.out.println(output);
        }
       
        public static String output = "";
       
        public static void foo(int i){
                try {
                        if (i == 1) {
                                throw new Exception();
                        }
                        output += "1";
                } catch (Exception e) {
                        output += "2";
                        return;
                } finally {
                        output += "3";
                }
               
                output += "4";
        }
求分析?看不懂
作者: 隔壁老猫    时间: 2015-12-30 22:02
foo(1); output变成了23        
i == 1 成立, 抛出异常, 直接catch住, 不走output +="1";
output += "2";                       //output变成"2"
return;                                  //建立了返回通道, 检查发现有finally需要执行, 所以还没有跳出
finally { output += "3"; }         //output变成"23"  finally执行结束, 方法结束. 没有执行到  output += "4";

foo(2);
i != 1;                                                        // throw new Exception(); 不执行
output += "1";                                            // output变成 "231"  
catch (Exception e) { output += "2";}             //程序没出错  不走catch
finally {  output += "3"; }                              // output变成 "2313"
output += "4";                                             //output变成 "23134"   方法结束
System.out.println(output);                            //23134




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2