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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Geek_001 中级黑马   /  2014-6-25 18:23  /  1104 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Geek_001 于 2014-6-26 02:18 编辑

不是已经处理了异常了吗?

捕获.PNG (36.36 KB, 下载次数: 2)

捕获.PNG

16 个回复

倒序浏览
直接捕获异常,执行语句直接跳到catch语句了,执行不到了

QQ截图20140625183619.png (10.58 KB, 下载次数: 2)

QQ截图20140625183619.png
回复 使用道具 举报
alive 发表于 2014-6-25 18:37
直接捕获异常,执行语句直接跳到catch语句了,执行不到了

我知道遇到throw,其下面的语句执行不到,但捕获的异常不是处理了吗?
若没在函数上声明异常又没catch的话会失败的,关键是此题不是下面catch了吗?
回复 使用道具 举报
这是语法错误,执行不到的语句怎么可能存在呢,就想你见过return关键字下面还有执行语句的么。你直接抛出异常,打印语句是执行不到的。
回复 使用道具 举报
alive 发表于 2014-6-25 18:50
这是语法错误,执行不到的语句怎么可能存在呢,就想你见过return关键字下面还有执行语句的么。你直接抛出异 ...

return 下面可以有语句啊,比如finally{}。。。。。
你的意思是执行不到的语句就可以被Java视为垃圾,所以会编译失败。
回复 使用道具 举报
Geek_001 发表于 2014-6-25 21:00
return 下面可以有语句啊,比如finally{}。。。。。
你的意思是执行不到的语句就可以被Java视为垃圾,所 ...

这句话废了 就编译时错误了
回复 使用道具 举报
彭飞 中级黑马 2014-6-25 22:21:19
7#
你试试 return 下面能写语句不,

视频里讲过,  throw 和  return  ,break,是一个等级权限的 。

其他的好像也没什么的了。
回复 使用道具 举报
遇到有异常可能的时候,要么抛,要么try。。。
回复 使用道具 举报
{:2_31:}{:2_31:}{:2_31:}{:2_31:}{:2_31:}{:2_31:}
回复 使用道具 举报
本帖最后由 Alan_Kwan 于 2014-6-25 22:51 编辑

按道理这段代码是不会编译失败的,你把编译失败的信息传上来看看?
按逻辑说的话,你在main函数上try是没必要的,因为func不会再抛出异常,所以肯定是print不到C的。最后结果是BD


噢,我知道了,之前漏掉了printA的语句。。这是貌似是JAVA编译机制特有的,如果在代码中定义了肯定不会执行的语句的话就会报错。。C语言貌似没有。。
回复 使用道具 举报
alive 中级黑马 2014-6-26 00:12:00
11#
Geek_001 发表于 2014-6-25 21:00
return 下面可以有语句啊,比如finally{}。。。。。
你的意思是执行不到的语句就可以被Java视为垃圾,所 ...

在同一个代码块中啊,finally跟try是两个代码块,比如for循环用return结束,下面还能用有代码么
回复 使用道具 举报
马到成功2014 发表于 2014-6-25 21:34
这句话废了 就编译时错误了

额,这样啊!return后只有finally{}可以执行到,其它语句就执行不到;
finally{}只有在System.exit(),jvm退出时才执行不到,其它时候一定会执行,额要记的好多啊!
回复 使用道具 举报
彭飞 发表于 2014-6-25 22:21
你试试 return 下面能写语句不,

视频里讲过,  throw 和  return  ,break,是一个等级权限的 。

谢谢!额记住了
回复 使用道具 举报
Alan_Kwan 发表于 2014-6-25 22:48
按道理这段代码是不会编译失败的,你把编译失败的信息传上来看看?
按逻辑说的话,你在main函数上try是没必 ...

额.....你可以把代码复制过去看看的,编译失败。
回复 使用道具 举报
alive 发表于 2014-6-26 00:12
在同一个代码块中啊,finally跟try是两个代码块,比如for循环用return结束,下面还能用有代码么 ...

return在一个代码块结束后,后面跟的是finally{}代码块,哦,貌似两个代码块.....
回复 使用道具 举报
Running 发表于 2014-6-25 22:24
遇到有异常可能的时候,要么抛,要么try。。。

在函数内抛出异常,必须在函数上声明,捕捉的异常要么try,要么继续抛,抛的话同时要在函数上声明;
若是运行时异常,则不需声明,捕捉到建议不try,以让程序停下来,以修改代码。
回复 使用道具 举报
彭飞 发表于 2014-6-25 22:21
你试试 return 下面能写语句不,

视频里讲过,  throw 和  return  ,break,是一个等级权限的 。

:)谢了,哥们。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马