程序中有try-catch-finally结构,finally之后还有return,假如try中有异常,finally和return是如何执行的?

[复制链接]
查看11 | 回复7 | 2011-9-15 03:54:43 | 显示全部楼层 |阅读模式
回复

使用道具 举报

千问 | 2011-9-15 03:54:43 | 显示全部楼层
在try中没有异常的情况下try、catch、finally的执行顺序try---finally如果try中有异常,执行顺序是try---catch---finally如果try中没有异常并且try中有return这时候正常执行顺序是try----finally---return如果try中有异常并且try中有return这时候正常执行顺序是try----catch----finally---return总之finally永远执行!追问我的意思是trycatchfinally里都没有return,finally之后有个return,如果try中有异常,finally执行完后,还能执行return吗?
回复

使用道具 举报

千问 | 2011-9-15 03:54:43 | 显示全部楼层
哈哈,那是不可能执行的了,try中有异常以后,根据java的异常机制先执行catch后执行finally,此时错误异常已经抛出,程序因异常而终止,所以你的return是不会执行的
回复

使用道具 举报

千问 | 2011-9-15 03:54:43 | 显示全部楼层
先finally然后return
回复

使用道具 举报

千问 | 2011-9-15 03:54:43 | 显示全部楼层
先是try{}catch(Exceptione){}finally{}然后再return返回
回复

使用道具 举报

千问 | 2011-9-15 03:54:43 | 显示全部楼层
恩,肯定是先finally,因为finally是一定要执行的,而如果先执行return的话finally就不一定了
回复

使用道具 举报

千问 | 2011-9-15 03:54:43 | 显示全部楼层
你可以单步调试一下,catch的异常肯定是先获取的,finally的语句是在catch语句执行完成后紧接着执行的,也就是说finally里的return语句是有返回结果的
回复

使用道具 举报

千问 | 2011-9-15 03:54:43 | 显示全部楼层
try里面的代码块若发生异常,就执行catch里面的代码。无论异常与否finally里的代码都会被执行!若遇到return则无条件跳出程序!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行