`
wangxue
  • 浏览: 8117 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

try { } catch{ } finally{ } 执行顺序总结

阅读更多
-- try catch finally 执行顺序验证
public class TestTry {
	public static void main(String[] args) {
		TestTry t = new TestTry();
		System.out.println(t.getString() + " ---- return执行结束!");
	}

	public String getString() {
		String testString = "abc";
		try {
			System.out.println("执行try!");
//			 int a = 9 / 0;
			return testString;
		} catch (Exception e) {
			System.out.println("执行catch!");
			return testString;
		} finally {
			System.out.println("执行finally!");
		}
	}
}


执行结果:

    [1]执行try!
    [2]执行finally!
    [3]abc ---- return执行结束!

-------------------------------------------------------------------
在try语句中,在执行return语句时,要返回的结果已经准备好了,就在此时,程序转到finally执行了。

在转去之前,try中先把要返回的结果存放到不同于a的局部变量中去,执行完finally之后,在从中取出返回结果,

因此,即使finally中对变量a进行了改变,但是不会影响返回结果。验证实例:
public class Test11 {
	public static void main(String[] args) {
		int b = f();
		System.out.println(b);
	}

	private static int f() {
		int a = 10;
		try {
			a += 10;
			System.out.println("try");
//			int e = 3 / 0;
			a += 10;
			return a;
		} catch (Exception ex) {
			System.out.println("catch");
			return a;
		} finally {
			System.out.println("finally");
			a += 100;
		}
	}
}


执行结果:

    [1]  try
    [2]  finally
    [3]  30


结论:

1.不管出没出现异常,finally块中的语句都会执行;
2.当try或catch块中有return语句时,finally块中的语句仍会执行;
3.finally块中的语句是在return语句执行之后才执行的,即函数返回值是在finally块中语句执行前确定的;
4.finally块中不主张包含return语句,如果加了return在finally块中,将返回这个值。

总结:finally在return前执行,在finally的操作,不会改变已经确定的return的值。



分享到:
评论

相关推荐

    try-catch-finally执行顺序验证

    try-catch-finally执行顺序验证(左边是.java文件,右边是.class文件) 提示: try、catch块内的return操作编译后会变成把return的值保存到变量var的操作。 总结: try、catch块内的return操作编译后会变成把return的值...

    try、catch、finally、return 执行顺序.doc

    try、catch、finally、return 执行顺序超详细讲解,包看包会。

    try catch finally的执行顺序深入分析

    首先执行try,如果有异常执行catch,无论如何都会执行finally,当有return以后,函数就会把这个数据存储在某个位置,然后告诉主函数,我不执行了,接下来你执行吧,所以函数就会推出

    C#中的try catch finally用法分析

    主要介绍了C#中的try catch finally用法,以实例形式分析了try catch finally针对错误处理时的不同用法,具有一定的参考借鉴价值,需要的朋友可以参考下

    trycatchfinaly

    3. 但是如果有 finally块的话,那么,finally 几乎是必定会执行的,但是这里有一个先后顺序的问题,应该是 finally 块和 打印异常堆栈将会在另外一个线程之中执行,所以 打印的顺序就很有意思了。 4. 如果在try或者...

    java面试题之try中含return语句时代码的执行顺序详解

    主要介绍了关于java中的一道面试题,这套题就是在try中含return语句时代码的执行顺序,这个问题看似简单,却暗藏杀机啊!文中通过一个个例子详细介绍了其中玄机,需要的朋友可以参考学习,下面来一起看看吧。

    C#异常处理的技巧和方法

    finally是监听程序是否在try或者catch中执行 下面列举的是try执行的语句是一个异常错误的情况 下面列举的是try执行语句是一个正确的情况 异常类的一个继承顺序图,异常类中的属性列表 catch中的表达式的几种...

    Java异常发生时程序的执行顺序

     5.finally段的代码无论是否发生异常都会执行。  6.在一个try语句块中,基类异常的捕获语句不可以写在子类异常捕获语句的上面。  看一个例子:   /** * @author Lansine *

    Java 基础核心总结 +经典算法大全.rar

    try 、finally 、catch 什么是 Error 内部类 创建内部类集合 Iterable 接口顶层接口 ArrayList Vector LinkedList 类Stack HashSet TreeSet LinkedHashSet 类 PriorityQueue HashMap TreeMap 类 LinkedHashMap 类 ...

    200个Java经典面试题总结附带答案.docx

    18. `try-catch-finally` 中,如果 `catch` 中 `return` 了,`finally` 还会执行吗?(是) Java 集合 19. 哪些集合类是线程安全的?(`Vector`、`Hashtable` 等) 20. `Collection` 和 `Collections` 有什么区别...

    C#基础知识点.doc

    * try-catch-finally语句 5\. 程序结构 C#中的程序结构用于组织和管理程序的代码。常见的程序结构包括: 5.1 类 类是C#中的基本结构单元,用于定义对象的行为和状态。类可以包含字段、属性、方法和事件等成员。 ...

    Java冲刺试题

    六、try-catch-finally 语句的执行顺序 在 try 语句中如果有 return 语句,finally 语句块总是会被执行的,且在 return 语句之前执行。 七、List<Short> 和 short 的关系 short 是基本类型,不能直接调用 add ...

    java 面试题 总结

    finally是异常处理语句结构的一部分,表示总是执行。 finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。 13、sleep()...

    最新各大公司企业真实面试题-NewEgg.面试题.txt

    1. finally和return的关系:finally块用于释放资源,return用于返回函数结果,在try-catch-finally中,finally块总是被执行。 2. 页面重定向的方式:包括客户端重定向、服务器端重定向、JavaScript重定向等。 3. ...

    Visual Basic 2010入门经典.part1.rar

    15.4 使用Try...Catch...Finally创建结构化错误处理程序 251 15.4.1 处理异常 253 15.4.2 处理预期的异常 254 15.5 总结 256 15.6 问与答 256 15.7 作业 257 15.7.1 测验 257 15.7.2 答案 257 15.7.3 练习 ...

    Visual Basic 2010入门经典.part2.rar

    15.4 使用Try...Catch...Finally创建结构化错误处理程序 251 15.4.1 处理异常 253 15.4.2 处理预期的异常 254 15.5 总结 256 15.6 问与答 256 15.7 作业 257 15.7.1 测验 257 15.7.2 答案 257 15.7.3 练习 ...

    java经典选择题题库及答案.docx

    Java语言提供了try、catch、finally等关键字来处理异常。 Java语言的Applet是指在Web浏览器中执行的Java程序。Applet可以在Web浏览器中显示图形、动画、游戏等。Applet的生命周期包括init、start、stop、destroy四...

    JAVA基础课程讲义

    try, catch,finally ,return 执行顺序 100 异常的处理办法之二,声明异常: throws子句 101 方法重写中声明异常原则 102 异常的处理办法之三,手动抛出异常,throw子句 103 自定义异常 103 使用异常机制建议 104 ...

    Perl-Core:单个导入中的 Perl 核心要素

    名称 Perl::Core - 单个导入中的 Perl 核心要素 版本 版本 0.0100 概要 use Perl::Core;... – 使用try/catch/finally关键字进行正常的异常处理 错误 请在 bugtracker 网站上报告任何错误或功能请

    java读写csv文件

    在读取每行数据时,我们使用 getValues() 方法来获取字符串数组,这个数组的顺序即文件数据列的顺序。最后,我们关闭了 CsvReader 对象。 需要注意的是,在读取 CSV 文件时,需要指定正确的字符编码,以避免读取到...

Global site tag (gtag.js) - Google Analytics