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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  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”的输出语句执行不到?

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 神马都是浮云

查看全部评分

5 个回复

倒序浏览
throw new Exception();
System.out.println("A");

你这里抛出异常 下面语句运行不到
其实就跟return continue break 下面不允许有语句一样
回复 使用道具 举报
try
                {
                        throw new Exception();
                        System.out.println("A");
                }

这里,你进 try 就抛异常,

程序就跳到 catch 块了,

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

所以编译就会报错!

虚拟机不允许程序中有一定执行不到的语句存在!

评分

参与人数 1黑马币 +2 收起 理由
枫儿 + 2 赞一个!

查看全部评分

回复 使用道具 举报
因为你throw抛出了异常所以你throw下面的语句一定执行不到,那个语句下面不要放语句
回复 使用道具 举报
抛出异常 就如同循环语句中的break,跳出了当前代码块。
回复 使用道具 举报
try
{
    throw new Exception(); //监测到这里抛出了异常,要去处理异常,
                                          //直接跳到catch()中去解决异常了,所以下面语句就执行不到了。
    System.out.println("A");
}
catch (Exception e)
{
    System.out.println("B");
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马