finally块中不允许使用return,continue或break的原因
来源:互联网 发布:吉诺比利05总决赛数据 编辑:程序博客网 时间:2024/05/14 16:45
一个try块可以不执行finally子句就能够退出的唯一方法是通过调用System.exit()方法来实现的。
如果控制因为一个return,continue或break语句离开这个try块,那么finally快会在控制转移到它的新的目标代码之前执行.
也就是说如果在finally块中使用return,continue或break,则会把抛出的异常吃掉。
package test;
public class TryTest {
public static void main(String[] args) {
try {
System.out.println(TryTest.test());// 返回结果为true其没有任何异常
} catch (Exception e) {
System.out.println("Exception from main");
e.printStackTrace();
}
}
public static boolean test() throws Exception {
try {
throw new Exception("Something error");// 1.抛出异常
} catch (Exception e) {// 2.捕获的异常匹配(声明类或其父类),进入控制块
System.out.println("Exception from e");// 3.打印
return false;// 4. return前控制转移到finally块,执行完后再返回
} finally {
return true; // 5. 控制转移,直接返回,吃掉了异常
}
}
}
如果控制因为一个return,continue或break语句离开这个try块,那么finally快会在控制转移到它的新的目标代码之前执行.
也就是说如果在finally块中使用return,continue或break,则会把抛出的异常吃掉。
package test;
public class TryTest {
public static void main(String[] args) {
try {
System.out.println(TryTest.test());// 返回结果为true其没有任何异常
} catch (Exception e) {
System.out.println("Exception from main");
e.printStackTrace();
}
}
public static boolean test() throws Exception {
try {
throw new Exception("Something error");// 1.抛出异常
} catch (Exception e) {// 2.捕获的异常匹配(声明类或其父类),进入控制块
System.out.println("Exception from e");// 3.打印
return false;// 4. return前控制转移到finally块,执行完后再返回
} finally {
return true; // 5. 控制转移,直接返回,吃掉了异常
}
}
}
- finally块中不允许使用return,continue或break的原因
- finally块中不允许使用return,continue或break的原因
- try..catch..finally块中的跳转语句(return,break,continue)使用注意事项
- 包含finally的异常代码块里的return,break,continue语句如何执行
- Java中break、continue、return语句的使用区别
- Java中break、continue、return语句的使用区别
- 在Java8的foreach()中使用return/break/continue
- Java中break, continue, return语句的使用区别
- Java中break、continue、return语句的使用区别
- continue,break,return和finally的用法和实例说明
- C#中return、break、continue的用法
- Java中continue,break,return的区别
- C#中return、break、continue的用法
- C#中return、break、continue的用法
- java中continue,return,break的区别
- java中continue,break,return的区别?
- Android中return,break,continue的区别
- 循环中break,continue,return的区别
- 测试
- 开发完成端口服务器过程中,实现post两次完成调用的问题和最终解决
- 无意间发现的一个帖子 ---转贴---
- window.onload & insertAdjacentHTML
- java数据类型转换(转)
- finally块中不允许使用return,continue或break的原因
- WinCE的一些网页
- 如何优化JAVA程序设计和编码,提高JAVA性能
- JavaScript实用的一些技巧
- php 实现 简单的权限管理
- STRING对象的增强函数
- Oracle数据库配置错误信息
- 如何做一个电脑游戏策划师(zt)
- 周润发的爱情本色 摘自《知音》