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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 吴通 中级黑马   /  2012-8-23 21:36  /  1452 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class DemoTry
{
    public static void func()
   {
      try
     {
        throw new Exception();
       System.out.println("A");
     }
     catch (Exception e)
    {
       System.out.println("B");
     }
}
   public static void main(String[] args)
  {
      try
     {
          func();
     }
     catch (Exception e)
     {
         System.out.println("C");
     }
    System.out.println("D");
  }
}

class Demo
{
      public static void main(String[] args)
     {
            try
            {
                   //throw new Exception();
                   showExce();
                   throw new Exception();
                   System.out.println("A");
           }
          catch (Exception e)
         {
                   System.out.println("B");
         }
         finally
         {
                   System.out.println("C");
         }
    }
     public static void show Exce()throws Exception
    {
           throw new Exception();
     }
}


结果编译能通过,但是如果把throw new Exception();放在try里面
不用show调用则编译通过不了,为什么啊?详细解释下  谢谢

2 个回复

倒序浏览
编译时,它只查找有没有语法错误,当throw new Exception();抛出一个异常时其下面的语句就不会执行,所以编译报错,
当调用一个方法去实现抛出一个异常,编译器不会查找方法中的方法体具体是什么,因此编译通过。
OK!
回复 使用道具 举报
throw new Exception();
                   System.out.println("A");

你这两个语句中第二个语句是个垃圾语句,永远也执行不到,所以编译失败。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马