Java中的try catch finaly先后调用顺序
自我总结,有什么不足或好的方案,希望大家给予纠正,感激不尽!
目的:try catch finaly的顺序执行,和大家复习一遍。
方法:debug来确认执行顺序。(需要引入junit包)
废话不多说,debug是检验代码执行顺序的唯一标准,哈哈...
测试一:
新建测试类:ExceptionTest
package com.core.test007;
import org.junit.Test;
public class ExceptionTest {
@Test
public void main(){
put(test007());
}
public int test007(){
int a = 10;
put("normal");
try {
put("try");
// a = 1 / 0;
put("try return before");
return a;
}catch (Exception e){
put("catch");
} finally {
put("finally");
}
put("method return before");
return 0;
}
public static void put(Object obj) {
System.out.println(obj);
}
}
打印出的信息为
normal
try
try return before
finally
10
debug了一下 ,执行语句的顺序为:
1) try体的语句,打印"try"
2) 在try体中,打印 "try return before"
3) 跳入finaly体,打印"finaly"
4) 再次执行try体中的return语句
5) 直接跳出函数体 返回到主函数体,打印 10
测试二:
将上述ExceptionTest类代码中[ int a = 1 / 0 ; ]之前的注释删除,保存再次run则打印的信息为:
normal
try
catch
finally
method return before
0
debug了一下 ,执行语句的顺序为:
1) try体的语句,打印 "try"
2) 执行语句 [ int a = 1 / 0 ; ]时,进入catch体,打印 "catch"
3) 跳入finaly体,打印 "finaly"
5) 跳出finaly体,打印 "method return before"
6) 执行return 0
7) 返回主函数,打印 0
总结:1. finaly体任何情况下都会执行。
2. 当执行到try体中存在异常的语句(本案例中的异常语句为:[ int a = 1 / 0 ; ])时,则在try体中异常语句之后的语句在本次执行过程中都不会再被执行,而是进入catch语句。
Java中的try catch finaly先后调用顺序的更多相关文章
- java中构造代码块、方法调用顺序问题
1. 继承的概念 继承在本职上是特殊——一般的关系,即常说的is-a关系.子类继承父类,表明子类是一种特殊的父类,并且具有父类所不具有的一些属性或方法. 2. 继承中的初始化顺序 从类的结构上而言,其 ...
- [转载]java中try 与catch的使用
留着以后看 原文地址:与catch的使用">java中try 与catch的使用作者:碌碌如玉 try{ //代码区 }catch(Exception e){ //异常处理 } 代码区 ...
- 【Java学习笔记之三十三】详解Java中try,catch,finally的用法及分析
这一篇我们将会介绍java中try,catch,finally的用法 以下先给出try,catch用法: try { //需要被检测的异常代码 } catch(Exception e) { //异常处 ...
- java中多线程执行时,为何调用的是start()方法而不是run()方法
Thead类中start()方法和run()方法的区别 1,start()用来启动一个线程,当调用start()方法时,系统才会开启一个线程,通过Thead类中start()方法来启动的线程处于就绪状 ...
- Java 中 try、catch、finally 语句块的执行顺序
假设代码顺序书写如下:try → catch → finally → 其他代码 则: 1.正常执行顺序:try → catch → finally → 其他代码 2.try,catch和finally ...
- Java中关于HashMap的元素遍历的顺序问题
Java中关于HashMap的元素遍历的顺序问题 今天在使用如下的方式遍历HashMap里面的元素时 1 for (Entry<String, String> entry : hashMa ...
- java中通过反射获取方法并且调用(getMethod和invoke深入)实践
为了支持业务的快速变更,往往采用可配置的方式,将业务逻辑的处理部分配置在数据库中或者XMl文件里.配置什么,如何配置才更灵活,That's a problem. 以数据库配置为例(xml相同),在数据 ...
- java中try 与catch的使用
(2011-10-08 17:08:43) 转载▼ 标签: 杂谈 分类: Java try{//代码区}catch(Exception e){//异常处理}代码区如果有错误,就会返回所写异常的处理. ...
- 你真的理解Java中的try/catch/finally吗?
看几个例子,回顾一下执行顺序 例子1 无异常,finally中的return会导致提前返回 public static String test() { try { System.o ...
随机推荐
- Python源码剖析之准备工作
一个Python程序开发者, 也是C语言爱好者, 为了加强自己对Python语言实现的理解, 最近选择阅读下陈儒老师的书, 对Python3.5.1源码进行阅读, 再次记录下读书笔记. 一.Pyth ...
- MySQL如何插入测试数据
关于插入MySQL测试数据,这里介绍两种方法: 选择优先级(结合PHP生成测试数据 > 使用存储过程 ). 使用存储过程(建议测试数据小于1000条使用该方法) 具体代码如下: 创建表: mys ...
- 在Java Web项目中添加定时任务
在Java Web程序中加入定时任务,这里介绍两种方式:1.使用监听器注入:2.使用Spring注解@Scheduled注入. 推荐使用第二种形式. 一.使用监听器注入 ①:创建监听器类: impor ...
- Eclipse卡顿,内存猛增解决方案
本文转载自http://rsy.iteye.com/blog/2095668/ PS:所有校验都去除后,对如下版本来说,内存一直猛增,解决办法参照上放博客:修改项目的.project文件,特此备注记录 ...
- POJ 3624 Charm Bracelet(01背包裸题)
Charm Bracelet Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 38909 Accepted: 16862 ...
- SSH防爆破脚本
github地址:https://github.com/demonxian3/LittleScript/blob/master/SSHprotecter.sh 使用方法: 1.给足脚本权限,chmod ...
- Debug模式下程序卡
Debug通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序.Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用. D ...
- [学习OpenCV攻略][009][从摄像机读入数据]
cvCreateCameraCapture(设备ID) 创建一个摄像机视频,返回值是CvCapture*类型.设备ID表示设备的编号,如果有多个摄像机设备,-1表示随机选择一个设备. #include ...
- for循环去重排序
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 将本地的项目导入到github仓库总结lxw
关键步骤: 第一:git clone https://github.com/lxw18231857001/demo-.git #把github上面的仓库克隆到本地 本地项目文件夹下 ...