return~~~~~
public class Test { public int sere() { try { System.out.println("ni"); return 5; }catch(Exception e) { System.out.println("hao"); return 6; }finally { System.out.println("nihao"); } } public static void main(String[] args) { Test t=new Test(); System.out.println(t.sere()); } }
所以说这个return 5;语句还是会执行咯,然后还会执行后面的语句是因为finally语句块的强制执行的原因?
像老师运行的程序中,return one/two也是会执行的咯?只是还要强制执行return -100000;语句。
返回的值时候-100000的原因是后面的返回值将前面的返回值进行了覆盖吗?
正在回答
同学你好,1、finally是与try-catch配合使用的哦!finally是无论try执行或是catch执行都会执行finally中的内容!这是finally的特性,所以finally是一定会执行的哦!
2、同学的说法是正确的,后面的return会覆盖前面的返回值!
程序遇见return;表示当前方法执行完成,就会退出方法!但是在try-catch-finally中比较特殊,退出方法之前要先执行finally块中的语句!
当程序没有出现异常,在try块或finally块中存在return;语句时,会退出方法,不再运行try-catch-finally外的语句。
当程序出现异常,在catch块或finally块中存在return;语句时,会退出方法,不再运行try-catch-finally外的语句。
但在程序执行过程中,没有遇到return语句,执行完try-catch-finally语句块,还是会继续往下执行程序的哦~
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
我的理解是return都放在最后执行,而且只执行最后一个return
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星