A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 張帅 中级黑马   /  2013-9-26 08:11  /  1515 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Demo
{  
         public static void function()
         {
               try
             {         
                 throw new Exception();
                 System.out.println("A");
             }
             catch(Exception e)
             {
                 System.out.println("B");
              }
        }
        public static void main(String[] args)
       {
              try
              {
                          function();
               }
                catch(Exception e)
             {
                 System.out.println("C");
              }
             System.out.println("D");
          }
}
//这个程序的执行结果为什么是编译失败?try里边抛异常了,但是后边也catch了,下边的语句为什么执行不到啊?

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

2 个回复

倒序浏览
还没开始复习异常部分,仅就个人理解作答,因为在function方法里异常已经被捕获,所以不会再抛出被main方法里捕获。我是在Eclipse里编译的,编译失败的可能结果有两个:一是一个.java文件里必须且只能有一个public class ,LZ的没有;二是在function方法里,抛出异常throw new Exception();后的语句System.out.println("A");不会被执行到。
PS。建议把代码放代码块里,方便说行号。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
   public static void function()
          {
                try
              {         
                  throw new Exception();
                  System.out.println("A");
              }
              catch(Exception e)
              {
                  System.out.println("B");
               }
         }

在function方法中,try语句中直接先抛出异常,再打印A,throw new Exception();
                  System.out.println("A");
但是当异常被抛出的时候,不会再执行打印A操作,虚拟机检测会编译失败,把打印语句放到
throw语句上面就不会出错了。
本题与catch无关。

希望可以帮助你~

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马