当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

finally调用流程

发表于: 2012-12-01   作者:czj4451   来源:转载   浏览次数:
摘要: 一般情况下,finally块的内容是保证要被执行的,即使在try块中抛出了异常,如: try { throw new Exception("Manually throw an exception"); } catch (Exception e) { e.printStackTrace(); } finally { System.out.
一般情况下,finally块的内容是保证要被执行的,即使在try块中抛出了异常,如:

	try {
		throw new Exception("Manually throw an exception");
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		System.out.println("Finally statement is being executed!");
	}


但也有例外情况。

1. try中调用System.exit(i)方法

   下面的finally块不会执行:
	try {
		System.exit(0);
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		System.out.println("Finally statement is being executed!");
	}


2. SwingUtilities.invokeLater调用System.exit(i)方法

下面的finally块会执行:
	try {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				System.exit(0);
			}
		});
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		System.out.println("Finally statement is being executed!");
	}

顾名思义,invokeLater调用的任务会延后执行。

3. 在执行try块的时候,虚拟机进程被终止,或者系统断电

finally调用流程

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
今天群里讨论了一个问题:try{ } catch{ } finally{ } 语句的执行流程! 在这里做下记录: 【程序清
finally 语句块一定会执行吗? 很多人都认为 finally 语句块是肯定要执行的,答案当然是否定的,看
首先说说我们的Tomcat7.0的目录结构: 包括目录: bin conf lib logs temp webapps work bin文件:
fuse处理请求的整个流程如下图所示,以unlink操作为例进行说明。其中“>”表示调用,”<”表示
在上例中分析了一下 [申请成立 50万元以下有限责任公司流程 ]的业务需求,其他类型的公司注册,以及
准备步骤 Retrofit源码下载地址:https://github.com/square/retrofit Retrofit源码目录结构: 官网
所有的android的app启动都有三种深入启动的方式:   ①app——Runtime Service——Lib   这种启
Objective-c是一门动态语言,动态两个字主要就体现在我们调用方法的时候,运行时回动态的查找方法,
Android的硬件抽象层: 简单来说,就是对Linux内核驱动程序的封装,向上提供接口,屏蔽低层的实现细
/******************************** 拉风的道长 本文地址:http://my.oschina.net/lifj/blog/346982
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号