黑马程序员技术交流社区

标题: 程序为何会编译失败呢? [打印本页]

作者: _Water    时间: 2014-4-4 10:11
标题: 程序为何会编译失败呢?
本帖最后由 _Water 于 2014-4-8 14:12 编辑
  1. 为何老提示错误: 无法访问的语句,System.out.println("A");
  2. class Demo
  3. {
  4.         public static void func()
  5.         {
  6.                 try
  7.                 {
  8.                         throw new Exception();
  9.                         System.out.println("A");
  10.                 }
  11.                 catch (Exception e)
  12.                 {
  13.                         System.out.println("B");
  14.                 }
  15.         }
  16.         public static void main(String[] args)
  17.         {
  18.                 try
  19.                 {
  20.                         func();
  21.                 }
  22.                 catch (Exception e)
  23.                 {
  24.                         System.out.println("C");
  25.                 }
  26.                 System.out.println("D");
  27.         }
  28. }
复制代码


作者: osully    时间: 2014-4-4 10:48
throw new Exception();
System.out.println("A");

你这里抛出异常 下面语句运行不到
就跟return continue break 下面不允许有语句一样
作者: 请备注    时间: 2014-4-4 11:12
楼上正解 ,throw new Exception();  这个语句执行了的话 ,他下面的语句就执行不到了。
另外 在抛异常的时候  父类的异常要放在最下面抛 否则也会出现子异常不执行的情况
作者: fufeng    时间: 2014-4-4 11:38
因为
                        try

                {
                        throw new Exception();
                        System.out.println("A");
                }你一try 就抛出了一个新异常,系统就进入了异常处理机制,就去处理异常了,当然try里面的其他代码就不能执行了,而且,永远都不可能执行,java虚拟机就会认为你下面的代码就是废话(个人理解),它就不干了。让我干活还要带上没用的东西。
处理方法:
1.将System.out.println("A");去掉
2.在 throw new Exception();前加上判断语句,即满足/不满足某条件就抛出异常,否则就就执行System.out.println("A");


作者: 杨殿生    时间: 2014-4-4 12:03
因为你永远不会执行到System.out.println("A");语句 ,throw new Exception();这句下面不能写语句,永远执行不到
作者: ╰青青子佩ˊゝ    时间: 2014-4-4 12:03
3点提醒你,希望能帮到你。看下面代码。
  1. class Demo
  2. {
  3.         public static void func()
  4.         {
  5.                 try
  6.                 {
  7.                         //1.你这里抛出异常,直接会被下面的catch捕捉,即程序直接进入catch内的代码中,那么System.out.println("A"),不能被执行。       
  8.                      throw new Exception();
  9.                      //2.你应该把这句输出代码放到上行代码前面.
  10.                      System.out.println("A");
  11.                 }              
  12.                 catch (Exception e)
  13.                 {
  14.                         System.out.println("B");
  15.                }
  16.         }
  17.         public static void main(String[] args)
  18.         {
  19.                 //3.上面已经对异常进行了处理,这里不需要再try和catch了。
  20.             //    try
  21.             //    {
  22.                         func();
  23.             //    }
  24.             //    catch (Exception e)
  25.             //    {
  26.                         System.out.println("C");
  27.             //    }
  28.                   System.out.println("D");
  29.         }
  30. }
复制代码

作者: 宋超2356    时间: 2014-4-4 12:10
  1. 为何老提示错误: 无法访问的语句,System.out.println("A");
  2. class Demo
  3. {
  4.         public static void func()
  5.         {
  6.                 try                  //开始尝试捕捉异常~
  7.                 {
  8.                         throw new Exception(); //抛出异常,被捕捉到
  9.                         System.out.println("A"); //跳过
  10.                 }
  11.                 catch (Exception e)             //捕捉到异常要怎么办...
  12.                 {
  13.                         System.out.println("B");
  14.                 }
  15.         }
  16.         public static void main(String[] args)
  17.         {
  18.                 try
  19.                 {
  20.                         func();
  21.                 }
  22.                 catch (Exception e)
  23.                 {
  24.                         System.out.println("C");
  25.                 }
  26.                 System.out.println("D");
  27.         }
  28. }
复制代码

作者: 张耀扬    时间: 2014-4-5 23:14
throw new Exception();
这一句抛出异常后, 下面这一句就不会执行了.
System.out.println("A");

作者: _Water    时间: 2014-4-8 14:11
感谢大家的解答




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