catch,finally执行遇到return语句怎么办

发布时间:2017-5-23 7:59:54 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"catch,finally执行遇到return语句怎么办",主要涉及到catch,finally执行遇到return语句怎么办方面的内容,对于catch,finally执行遇到return语句怎么办感兴趣的同学可以参考一下。

try { //可能出异常 catch { //try异常则执行,否则这里的代码不会执行 } finally { //不管有没有异常,finally都会执行 } 比如 public class Test { public static void main(String[] args) { //try语句,出错了首先执行catch语句,在执行finally语句,即使有return,finally语句块也会执行 try{   int c=Integer.parseInt("1gjrio"); //这语句不会执行 System.out.println(c); }catch(Exception e) { System.out.println("catch------转换错误!!!"); } finally { System.out.println("finally------执行"); } } } 但是有人遇到过面试题 如果 try里面有return 语句,finally会执行吗?catch里面有return 语句会执行吗? 答案是肯定的, 请看一下代码 package exceptionfinally; public class Test { public static void main(String[] args) { System.out.println(getNum()); } public static int getNum(){ int i=1; try{   int c=Integer.parseInt("1gjrio"); return i; } catch(Exception e){ System.out.println("catch"); i=3; return i; }finally{ i=2; // return i; } } } 得到的结果是多少呢?答案是:3 如果把这个return 的注释去掉 答案是多少呢? 答案是:2 原理是什么呢?看了资料还是很简单的 return语句的执行是: 将结果集压入调用此函数的栈帧的operate stack,  然后将此方法栈帧从jvm stack 弹出来,方法调用完毕,finally就在结果压栈与方法栈帧弹出的中间执行。如果finally里面有return语句,则jvm虚拟机再这样执行一次,然后就出现了上面的结果。 以上问题,小弟学习java也是有点兴趣,喜欢研究,看了网上的一些资料,和自己实验写出的。如果有什么不对的,欢迎指正,谢谢。

上一篇:(二十二)安全性
下一篇:公网IP映射到内网某台电脑上

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

腹肌贴健身器材智能腹部训练健腹器肌