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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 楚轩 中级黑马   /  2014-5-25 11:01  /  1304 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 楚轩 于 2014-5-25 11:11 编辑

class Demo1
{
        public static void main(String[] args)
        {
                try
                {
                        showExce();
                        System.out.println("A");
                }
                catch (Exception e)
                {
                        System.out.println("B");
                }
                finally
                {
                        System.out.println("C");
                }
                System.out.println("D");
        }
        public static void showExce()throws Exception
        {
                throw new Exception();
        }
}
/*Demo1和Demo2中的输出"A"语句都是无法访问到的语句,
  为什么一个编译可通过,一个编译失败呢?  还是有点不明白,编译失败的情况是怎么划分或有哪些情形。
  */
class Demo2
{
        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");
        }
}


评分

参与人数 1技术分 +1 收起 理由
SyouRai_Tsk + 1

查看全部评分

2 个回复

倒序浏览
本帖最后由 e10my 于 2014-5-25 19:37 编辑

demo2中 你将
  1.                         System.out.println("A");
复制代码

写在了
  1.                         throw new Exception();
复制代码

之后
抛出异常之后 这之后的语句将不会执行 这是不允许的(无论如何都不会执行到)。 所以会出现语法错误

  1. Test2.java:20: 无法访问的语句
  2.                         System.out.println("A");
  3.                         ^
  4. 1 错误
复制代码

反正在你抛出异常之后就不会执行后面的语句那么干脆删掉好了

  1. public class Test2
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 try
  6.                 {
  7.                         func();
  8.                 }
  9.                 catch (Exception e)
  10.                 {
  11.                         System.out.println("C");
  12.                 }
  13.                 System.out.println("D");
  14.         }
  15.                 public static void func()
  16.         {
  17.                 try
  18.                 {
  19.                         throw new Exception();
  20.                         //System.out.println("A");

  21.                 }
  22.                 catch (Exception e)
  23.                 {
  24.                         System.out.println("B");
  25.                 }
  26.         }
  27. }
复制代码

像这样 。
updata :

有类似的错误如:

  1.                 for(int i = 0; i<=4;i++){
  2.                         break;
  3.                         System.out.println("a");
  4.                 }
复制代码

以上代码也是由于输出语句无法执行到而错误信息:
Unreachable code [无法执行到的代码]

这样的情况毕老师的课程中 3-10 有详细的解释

ps :感谢管理员加分!

评分

参与人数 1技术分 +1 收起 理由
SyouRai_Tsk + 1

查看全部评分

回复 使用道具 举报
楼上正解
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马