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

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

    震惊

    震惊

版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号