0016 Java学习笔记-异常-如果try-catch-finally中都存在return语句会怎样?
2024-10-18 23:35:23
上午在搜索"System.runFinalization"的时候,搜到 http://www.cnblogs.com/Skyar/p/5962253.html ,其中有关于try-catch-finally的部分,特整理如下
先看下面这个方法的返回值
public static String test(){
String x="";
String y=null;
try{
x=y.replace("A","B");
return x+"C";
}catch(Exception e){
x="D";
return x+="EFG";
}finally{
x=x+"H";
return x; //返回DEFGH
}
}
执行过程
- 执行try块:执行中抛出一个"NullPointerException",被catch块捕获;return语句得不到执行
- 执行catch块:x="D"。此时x=D
- 执行catch块:x+="EFG"。此时x=DEFG,return操作挂起
- 执行finally块:x=x+"H"。此时x=DEFGH
- 执行finally块:return x。将x=DEFGH返回给调用者
- 该方法结束
执行机制
- 如果try中没有异常抛出
- 执行到try块时,如果return后面跟的是个语句,把该语句运算完,暂时放下不return;
- 寻找并执行finally语句块,如果finally中有return语句,就执行并return,方法结束;如果没有return语句,就返回执行try中的return,方法结束
- 如果try中抛出异常
- try块中抛出异常的这个语句后面的语句都不会执行,后面的return执行不到
- catch块捕获后,执行catch块,到return语句时,运算完return后面的语句,暂时放下不return
- 寻找并执行finally语句块,遇到return语句,运算并return,方法结束;如果没有return语句,就返回执行catch的return,方法结束
参考资料:http://www.cnblogs.com/Skyar/p/5962253.html
最新文章
- springmvc+mybatis事务回滚
- notepad++快捷键
- SSH之免密码登录
- Python的平凡之路(14)
- 手工创建tomcat应用,以及实现js读取本地文件内容
- (转载)Eclipse下配置Github环境 .
- puppet foreman
- CSS3 简易照片墙
- iPhone、iPad强制关机
- Maven项目搭建(二):Maven搭建SSM框架
- ASP.NET Core学习之二 菜鸟踩坑
- 【原创】Aduino小车玩法全记录
- Vue学习之路6-条件渲染
- Python os.walk() 方法遍历文件目录
- Python常用模块--datetime
- 再谈 iptables 防火墙的 指令配置
- django之ORM专项训练之图书信息系统 了不起的双下方法实战 和 分组 聚合 Q, F查询,有約束和無約束
- Selenium2+python自动化38-显式等待(WebDriverWait)
- java分解质因数,具体程序分析和代码
- IOS初级:UIScrollView &; UIPageControl
热门文章
- 登录校验(demo)
- XMPP客户端开发(1)--连接和登录
- Spring注解@Value的用法
- android FragmentActivity+FragmentTabHost+Fragment框架布局
- Java基础复习笔记系列 四 数组
- <;welcome-file-list>;标签的控制作用以及在springmvc中此标签的的配置方式
- java顺序表和树的实现
- apache配置运行zendframework 2
- bootstrap字体图标在谷歌显示正常,在火狐显示异常的问题
- Headroom.js – 快速响应用户的页面滚动操作