一个Java的try-catch类型题目

Given:11.staticvoidtest(){12.try{13.Stringx=null;14.System.out.print(x.toString()+"")... Given:
11. static void test(){
12. try{
13. String x = null;
14. System.out.print(x.toString() + " ");
15. }
16. finally{System.out.print("finally ");}
17. }

18. public static void main(String[] args){
19. try{test();}
20. catch(Exception ex){System.out.print("exception ");}
21. }
What is the result?
A. null
B. finally
C. null finally
D. Compilation fails.
E. finally exception
答案:E

12行的try语句中,可以没有catch语句么?
20行的catch是在finally语句之后执行的么?
最后就是20行catch的错误是什么呢?因为x.toString()这个方法的问题么?
展开
 我来答
pensiero
2010-09-02 · TA获得超过1.1万个赞
知道大有可为答主
回答量:6921
采纳率:83%
帮助的人:1260万
展开全部
try块后catch块不是必须的,但如果try块后没有catch块,就必须有finally块,也就是说try不能单独使用。
try块后不接catch,在框架设计上常出现,本方法若出现Exception时,自己不处理,抛出到框架专门处理Exception的特定位置去统一处理。

这个Exception会向上抛至调用处,如果仍没有catch就会再向上抛,如果程序一直没有处理,这个Exception最后会抛到jvm中,然后jvm就会报告一个错误。

你这里的代码,Exception会在main函数的try-catch中捕获并处理。
20行的catch是属于另一个try块的,与test函数中的finally无关。当test函数的try块中出现异常,就会直接跳进finally,finally块中的内容执行完后,再将产生的异常向调用者抛出,也就是main函数。在main函数的try-catch中捕获并处理。
也就打印了finally exception

最后被catch到的异常是NullPointerException空指针异常。
第13行 String x = null;
对象都不存在,第14行x.toString()就会产生一个NullPointerException。
hwcheng0826
2010-09-01
知道答主
回答量:15
采纳率:0%
帮助的人:28万
展开全部
12行的try语句可以不用catch.这里发生的空指针异常在20行的catch处理了。
20行的catch是在finally语句之后执行的么? 是的。
错误原因就是x.toString()这个方法,发生空指针异常。
x不能为null。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我非梁山伯
2010-09-01 · TA获得超过148个赞
知道小有建树答主
回答量:164
采纳率:0%
帮助的人:103万
展开全部
有try一定要有catch,20行的错误就是2个cry对应1个catch,其他有没有错误 具体我也没把上面编译过
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
MeepoMiracle
2010-09-01 · TA获得超过161个赞
知道小有建树答主
回答量:246
采纳率:0%
帮助的人:139万
展开全部
12行的try一定要对应一个catch
在14行时x发生空指针异常,此时应该有catch接住这个异常而你写的没有
所以肯定出现运行错误
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式