黑马程序员技术交流社区

标题: 异常问题 [打印本页]

作者: 吴通    时间: 2012-8-23 21:36
标题: 异常问题
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调用则编译通过不了,为什么啊?详细解释下  谢谢

作者: 商秀川    时间: 2012-8-23 21:48
编译时,它只查找有没有语法错误,当throw new Exception();抛出一个异常时其下面的语句就不会执行,所以编译报错,
当调用一个方法去实现抛出一个异常,编译器不会查找方法中的方法体具体是什么,因此编译通过。
OK!
作者: 邓超军    时间: 2012-8-23 21:51
throw new Exception();
                   System.out.println("A");

你这两个语句中第二个语句是个垃圾语句,永远也执行不到,所以编译失败。




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