黑马程序员技术交流社区

标题: 面向对象第10天的练习四中的关于try和catch的代码 [打印本页]

作者: 会说话的木头    时间: 2014-4-10 15:15
标题: 面向对象第10天的练习四中的关于try和catch的代码
  1. class Demo
  2. {
  3.         public static void func()
  4.         {
  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.         }
  17.         public static void main(String[] args)
  18.         {
  19.        
  20.                 try
  21.                 {
  22.                         func();
  23.                 }
  24.                 catch (Exception e)
  25.                 {
  26.                         System.out.println("C");
  27.                 }
  28.                 System.out.println("D");
  29.        
  30.         }
  31. }
复制代码


为什么编译失败,且失败的原因是因为打印“A”的输出语句执行不到?
作者: _Water    时间: 2014-4-10 15:29
throw new Exception();
System.out.println("A");

你这里抛出异常 下面语句运行不到
其实就跟return continue break 下面不允许有语句一样
作者: jingdou56    时间: 2014-4-10 15:33
try
                {
                        throw new Exception();
                        System.out.println("A");
                }

这里,你进 try 就抛异常,

程序就跳到 catch 块了,

下面的  System.out.println("A"); 这句是永远执行不到的,

所以编译就会报错!

虚拟机不允许程序中有一定执行不到的语句存在!
作者: 杨殿生    时间: 2014-4-10 17:48
因为你throw抛出了异常所以你throw下面的语句一定执行不到,那个语句下面不要放语句
作者: 小歪    时间: 2014-4-10 20:12
抛出异常 就如同循环语句中的break,跳出了当前代码块。
作者: Mr.__ㄨīn    时间: 2014-4-11 18:41
try
{
    throw new Exception(); //监测到这里抛出了异常,要去处理异常,
                                          //直接跳到catch()中去解决异常了,所以下面语句就执行不到了。
    System.out.println("A");
}
catch (Exception e)
{
    System.out.println("B");
}





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