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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© _Water 中级黑马   /  2014-4-4 10:11  /  843 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 _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. }
复制代码

8 个回复

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

你这里抛出异常 下面语句运行不到
就跟return continue break 下面不允许有语句一样

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报
楼上正解 ,throw new Exception();  这个语句执行了的话 ,他下面的语句就执行不到了。
另外 在抛异常的时候  父类的异常要放在最下面抛 否则也会出现子异常不执行的情况
回复 使用道具 举报
因为
                        try

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

回复 使用道具 举报
因为你永远不会执行到System.out.println("A");语句 ,throw new Exception();这句下面不能写语句,永远执行不到
回复 使用道具 举报
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. }
复制代码
回复 使用道具 举报
  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. }
复制代码
回复 使用道具 举报
throw new Exception();
这一句抛出异常后, 下面这一句就不会执行了.
System.out.println("A");
回复 使用道具 举报
感谢大家的解答
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马