`

finally调用流程

    博客分类:
  • java
阅读更多
一般情况下,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块的时候,虚拟机进程被终止,或者系统断电
分享到:
评论

相关推荐

    棋盘覆盖算法流程.doc

    finally,我们使用 printf 函数来输出棋盘的覆盖结果。 在分析部分,我们可以看到,chessBoard 函数的参数是 tr=0,tc=0,dr=0,dc=1,size=4。这意味着我们需要覆盖一个 4x4 的棋盘,特殊棋子位于第一行第二列。...

    战斗流程设计思路1

    根据双方每回合可以交手的次数得到双方共用的交手次数(rate_finally);进入每回合的交手次数的循环:双方战斗函数(attack())的调用(目的是看是否

    Java软件开发工程师笔试题.pdf

    3. 异常机制:Java 中的异常机制可以用于流程控制,但 finally 代码段在发生异常时不一定必须执行。在 catch 代码段中可以使用 return 语句来返回到异常抛出点。可以把 catch 到的异常对象再次抛出,使上层 try-...

    LvanLiu#LvanNote#还有一些规则我们需要了解的1

    火车失事混杂隐藏结构错误处理使用异常而非返回码先写try-catch-finally语句使用不可控异常给出异常发生的环境说明依调用者需要定义异常类定义常规流程,

    【09-异常处理】

    发生异常的方法逐渐向外传播,首先传给该方法的调用者,该方法调用者再次传给其调用者……直至最 后传到 main方法,如果main方法依然没有处理该异常,JVM会中止该程序,并打印异常的跟踪栈信 息。 异常处理...

    学习Java软件开发工程师笔试题.pdf

    异常机制可以用于流程控制,但finally代码段在发生异常时不一定必须执行。catch代码段中可以使用return语句来返回到异常抛出点。可以把catch到的异常对象再次抛出,使上层try-catch结构继续处理该异常事件。 4. ...

    day26作业1

    3. 异常处理:Java语言提供了多种异常处理机制,例如使用try-catch语句捕捉异常,使用finally语句释放资源。 day26作业1涵盖了Java语言的基础知识、控制结构、函数、面向对象编程和异常处理等多个方面,旨在帮助...

    深入java虚拟机中文第2版

    第5-20章深入描述了Java技术的内部细节,包括垃圾收集、Java安全模型、Java的连接模型和动态扩展机制、class文件、运算及流程控制等等,其中第6章和附录A-C安全可以作为class文件和指令集的参考手册。 前言 第1章 ...

    突破程序员基本功的16课.part2

    2.2.1 隐式调用和显式调用 2.2.2 访问子类对象的实例变量 2.2.3 调用被子类重写的方法 2.3 父子实例的内存控制 2.3.1 继承成员变量和继承方法的区别 2.3.2 内存中子类实例 2.3.3 父、子类的类变量 2.4 final...

    Java基础选择题(含答案).doc

    5. 控制流语句是 Java 语言中用于控制程序流程的语句,包括if 语句、switch 语句、循环语句等。例如,if (a > 50) { b = 9; } 就是如果变量 a 的值大于 50,那么将变量 b 的值设置为 9。 6. 方法调用是 Java 语言中...

    Tea语言-PHP

    支持对象成员风格调用,如:"Some string".length内置单元模块(Unit)体系,基于单元模块组织程序,和访问控制无普通全局变量,变量作用域最高为普通函数层级,无需担心全局变量污染问题字符串处理语法灵活、简单而...

    北邮_高级语言程序的设计(基于Java)_阶段作业二.docx

    例如,try-catch 语句可以捕捉和处理异常,finally 语句可以确保资源的释放。 通过本资源,读者可以快速了解 Java 语言程序设计的基本概念和技术要点,并能够更好地应用 Java 语言进行程序设计。

    JSTL详细标签库介绍

    finally{无类是否出现异常都执行的程序} <BR>1、 若try抛出Exception,App寻找在Catch1~100寻找合适异常处理程序,若找到,执行CATCH{}代码,没有,执行最后一个catch{}后代码<BR>2、 若try未抛出Exception,就...

    JAVA面试题最全集

    15.MVC (Struts的工作流程) 16.什么是MDA 17.tcp与udp的区别 18.链表与散列表和数组的区别 19.堆和栈的区别 20.ejb的分类及区别 21.你对现在软件业以及国内软件业的看法 22.谈谈java多线程 23.谈谈文件...

    超级有影响力霸气的Java面试题大全文档

    当客户机第一次调用一个Stateful Session Bean 时,容器必须立即在服务器中创建一个新的Bean实例,并关联到客户机上,以后此客户机调用Stateful Session Bean 的方法时容器会把调用分派到与此客户机相关联的Bean实例...

    深入Java虚拟机(原书第2版).pdf【附光盘内容】

    第5-20章深入描述了java技术的内部细节,包括垃圾收集、java安全模型、java的连接模型和动态扩展机制、class文件、运算及流程控制等等,其中等6章和附录a-c完全可以作为class文件和指令含集的参考手册。本书还附带...

    java笔试题目以及部分答案

    sleep() 方法将线程挂起一段时间,而 wait() 方法将线程挂起,直到其他线程调用 notify() 或 notifyAll() 方法。 13. Java 有没有 goto? Java 语言中没有 goto 语句,但是可以使用 break、continue 和 return ...

    java 面试题 总结

    Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。 与cgi的区别...

    java面试题

    答:servlet实例化时调用init方法,得到请求时调用service方法,service方法自动派遣doget或dopost方法,最后当实例销毁时调用destroy方法。 error和exception有什么区别? 答:error是指错误,通常程序员不能通过...

Global site tag (gtag.js) - Google Analytics