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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Moonboy2014 中级黑马   /  2014-6-16 00:12  /  3004 人查看  /  20 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Demo
{
        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");
        }
}
请教各位高手,这段代码问题出在哪里,知道的请详细解答一下,感谢!

20 个回复

倒序浏览
System.out.println("a");
这句代码访问不到 。
throw new Exception(); 你都抛出异常了,运行到这句代码时就会跳出。所以访问不到。
换个顺序就行了。
回复 使用道具 举报 1 0
因为程序执行try、catch块时
遇到了return或throw语句都会导致方法结束.你的输出代码在这之后是执行不到的,所以报错
回复 使用道具 举报
throw new Exception()执行后代码将会跳转到catch块中,故不会再继续执行下边的打印语句
回复 使用道具 举报
土突突 发表于 2014-6-16 16:05
throw new Exception()执行后代码将会跳转到catch块中,故不会再继续执行下边的打印语句 ...

程序跳到catch块不执行下面的语句没问题,关键下面的语句也没语法错误。它干嘛要报错呢,是java的语法规定还是?
回复 使用道具 举报
土突突 发表于 2014-6-16 16:05
throw new Exception()执行后代码将会跳转到catch块中,故不会再继续执行下边的打印语句 ...

程序跳到catch块不执行下面的语句没问题,关键下面的语句也没语法错误。它干嘛要报错呢,是java的语法规定还是?
回复 使用道具 举报
请问:在func中既然已经try,catch过了,那在main里面还有必要再try一次吗?
回复 使用道具 举报
lvc 发表于 2014-6-16 02:40
因为程序执行try、catch块时
遇到了return或throw语句都会导致方法结束.你的输出代码在这之后是执行不到的 ...

程序跳到catch块不执行下面的语句没问题,关键下面的语句也没语法错误。它干嘛要报错呢,是java的语法规定还是?
回复 使用道具 举报
唐坚 发表于 2014-6-16 01:33
System.out.println("a");
这句代码访问不到 。
throw new Exception(); 你都抛出异常了,运行到这句代码 ...

程序跳到catch块不执行下面的语句没问题,关键下面的语句也没语法错误。它干嘛要报错呢,是java的语法规定还是?
回复 使用道具 举报
Moonboy2014 发表于 2014-6-16 18:18
程序跳到catch块不执行下面的语句没问题,关键下面的语句也没语法错误。它干嘛要报错呢,是java的语法规 ...

你指的的是catch 中的语法 没有出错。为什么还要报错吧。
你写的每句代码 编译器应该都能访问到,如果你写的代码,编译器访问不到,那么编译器就就会跳出程序 直接报错。这应该是java的内部机制实现的。
回复 使用道具 举报
因为你直接抛出异常,  抛出异常会直接执行catch  所以你打印的代码会出错。。
回复 使用道具 举报
路过!!!!!
回复 使用道具 举报
唐坚 发表于 2014-6-16 21:31
你指的的是catch 中的语法 没有出错。为什么还要报错吧。
你写的每句代码 编译器应该都能访问到,如果你 ...

:loveliness:真是这样啊?
回复 使用道具 举报
学习下。
回复 使用道具 举报
唐坚 发表于 2014-6-16 01:33
System.out.println("a");
这句代码访问不到 。
throw new Exception(); 你都抛出异常了,运行到这句代码 ...

throw new Exception(); 你都抛出异常了,运行到这句代码时就会跳出。所以访问不到。
这里编译就不会通过,所以应该删除System.out.println("a");

那么答案就是
b
d
回复 使用道具 举报
不用代码演示了,换个方式问,就是说java在编译一段程序时,只要java虚拟机有编译不到的代码就会报错是吗?
回复 使用道具 举报
学习中~~~~~~~~~~~~~~~~~~
回复 使用道具 举报
代码没问题,这个应该是学习异常时候用的吧
回复 使用道具 举报
Moonboy2014 发表于 2014-6-16 18:18
程序跳到catch块不执行下面的语句没问题,关键下面的语句也没语法错误。它干嘛要报错呢,是java的语法规 ...

话是没错,但这可以理解为是java语法的一个约定。很多时候不是你觉得没错就行了啊。sun发布JDK的初衷就是为了制定一个通用的规范啊
回复 使用道具 举报
土突突 发表于 2014-6-17 01:02
话是没错,但这可以理解为是java语法的一个约定。很多时候不是你觉得没错就行了啊。sun发布JDK的初衷就是 ...

:loveliness:恩恩,谢谢!
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马