初学java,求教try catch后使用finally的作用是关闭对象

但是如果finally语句之前我使用了跳转语句,跳转到其他页面,finally还会执行吗?

try{
}catch(){
}finally{
}

该结构是用来捕捉异常信息的 ,异常来源于try块中, 在catch中进行处理 finally可以对资源进行释放或其他操作
1. 假如 在try中没有异常产生,并return finally 仍然会执行, 将return 的结果保存,执行完finally在return
2 , 在1的基础上,如果 finally中最后也return 那个,try中的return会失效 ,执行finally中return
3. 如果try 或者catch(有异常的情况下)中不是return 而是写的是 System.exit(0); 那么finally此时不执行,直接关闭虚拟机。
4 .在2的基础上,如果finally中嵌套 try finally结构的话 ,执行完 finally里面的try 在执行 finally中的finally
5 . 在4的基础上 如下代码会产生错误
try{
}catch(){
}finally{
try{
}catch(){
}finally{
return 1;
}
return 0;
}
因为finally要求代码必须被执行,虚拟机此时不知道 return1必须被执行,还是return 0 必须被执行,因为 他么都在finally中 ,希望对你有所帮助
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-08
当然会执行,finally的意思就是你前面所有的语句都执行完了才会执行。
第2个回答  2013-03-09
finally是无论如何都会执行的,只是执行的顺序不同罢了。
第3个回答  2013-03-08
finally中的语句暂时不会执行。如果你跳转到其他的代码段,这个try中的代码可看做主调方法,跳转到的代码可看做被调方法。程序的大方向是由上到下进行,如果读到这一引起跳转的语句跳转到其他代码后,必然先开始执行其他的代码,然后其他的代码执行完了,也就是被调方法一行行都执行完了,那么返回主调方法,继续try下面的语句的执行。如果这时候恰巧try中的语句也都执行完了,那么系统这个时候才会自动执行finally中的语句。
finally里面的语句是为了对资源统一进行管理。设想引起跳转的那一句代码要跳转到其他的代码去执行,这一段代码实则可以看做try里面一个完成程序目的一段分支分支,不会一跳转就自动执行finally。
你可以做一个测试,引起跳转的这句话这样写:new A(构造实参).launch(),新new一个A对象并执行launch方法。可能构造方法还需要try里面的参数,如果finally一下子关了肯定不符合逻辑。你可以在launch中写一句输出的话,finally中写一句输出的话,看看那个先执行。
第4个回答  2013-03-21
不管你前面有什么,finally必然执行
第5个回答  2013-03-14
finally语句就算跳转到其他页面,还是会执行的

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网