第18章 finally子句
微型子例程:字节码中的finally子句在方法内部的表现很想“微型子例程”。java虚拟机在每个try语句块和与其相关的catch子句的结尾都会调用finally子句的子例程,finally子句结束后(这里结束指的是finally子句中的最后一条语句正常执行完毕,没有抛出异常,或执行return、continue、break等情况),隶属于这个finally子句的微型子例程执行“返回”操作;程序在第一次调用微型子例程的地方继续执行后面的语句。
jsr指令是使java虚拟机跳转到微型子例程的操作码。jsr使用一个双字节长度的操作数,这个操作数指出从jsr指令到微型子例程开始处的16位带符号的偏移量。当java虚拟机遇到jsr指令时,它会把返回地址压入栈,然后从finally微型子例程的开始处继续执行。返回地址是紧接在jsr操作码和操作数后面的字节码地址(偏移量或本地指针),该地址的类型为returnAddress。
微型子例程执行完毕后,将调用ret指令,ret指令执行从子例程中返回的操作,ret指令只有一个操作数,这个操作数是一个存储返回地址的局部变量的索引。
jsr指令并不会调用java方法,它只能跳转到相同方法的不同操作码处;同样,ret指令也不能令java方法返回,它只能使虚拟机调回相同方法中调用jsr操作码和它的操作数之后的位置。
在每一个finally微型子例程的开始处,返回地址都会从栈顶弹出,并且存储在局部变量中,ret指令将会从这个局部变量中取出返回地址。这样做是由于,finally微型子例程本身会抛出异常或者含有return、break、continue等语句;由于这些可能性的存在,被jsr指令压入栈的额外返回地址必须立即从栈中移除。当finally子例程通过return、break、continue或者抛出异常退出时,栈中的额外返回地址就不必考虑了。
相关推荐
第18章 finally子句 18.1 微型子例程 18.2 不对称的调用和返回 18.3 一个模拟:“hop around” 18.4 随书光盘 18.5 资源页 第19章 方法的调用与返回 19.1 方法调用 19.1.1 java方法的调用 19.1.2...
译者序 前言 第1章 Java体系结构介绍 第2章 平台无关 第3章 安全 第4章 网络移动性 第5章 Java虚拟机 第6章 Java class文件 第7章 类型的生命周期 第8章 连接模型 第9章 垃圾收集 ...第18章 finally子句
本项目为基于Java语言的系统后端优化设计源码,包含202个文件,其中包括181个Java源代码文件、14个XML配置文件、1个Git忽略文件、1个Markdown...该源码专注于finally子句的代码优化,旨在提升系统后端性能和稳定性。
第18章 finally子句 第19章 方法的调用与返回 第20章 指令invokespecial 第21章 线程同步 附录A 按操作码助记符排列的指令集 附录B 按功能排列的操作码助记符 附录C 按操作码字节值排列的操作码助记符 附录D Java...
根据提供的信息,我们可以总结出以下关于《深入Java虚拟机》这本书的关键知识点: ### 书籍概述 本书名为《深入Java虚拟机》,由Bill Venners撰写,是一本详细讲解Java虚拟机内部工作原理的专业书籍。该书主要分为...
第18章 finally子句 第19章 方法的调用与返回 第20章 指令invokespecial 第21章 线程同步 附录A 按操作码助记符排列的指令集 附录B 按功能排列的操作码助记符 附录C 按操作码字节值排列的操作码助记符 附录D Java...
完整版,有书签。 第1章 Java体系结构介绍 第2章 平台无关 第3章 安全 第4章 网络移动性 第5章 Java虚拟机 ...第18章 finally子句 第19章 方法的调用与返回 第20章 指令invokespecial 第21章 线程同步
动力节点的Java课程适合绝对零基础的观看,教程中讲解了Java开发环境搭建、Java的基础语法、Java的面向对象。每一个知识点都讲解的非常细腻,由浅入深。适合非计算机专业,想转行做Java开发的朋友,或者想让Java基础...
在异常处理中,`finally`子句扮演着关键角色,确保某些代码无论是否发生异常都会被执行。这对于清理资源,如关闭文件、网络连接或者释放内存等操作至关重要。 在Java中,异常处理通过`try-catch-finally`结构实现。...
Java 中 finally 语句块与 return 的执行关系 Java 中的 finally 语句块是用于保证无论出现什么情况,一定要执行的代码块。在 try-catch-finally 结构中,finally 语句块的执行顺序是非常重要的。下面我们来详细...
第18章 finally子句 18.1 微型子例程 18.2 不对称的调用和返回 18.3 一个模拟:“Hop Around” 18.4 随书光盘 18.5 资源页 第19章 方法的调用与返回 19.1 方法调用 19.1.1 Java方法的调用 19.1.2 本地方法...
第18章 finally子句 18.1 微型子例程 18.2 不对称的调用和返回 18.3 一个模拟:“Hop Around” 18.4 随书光盘 18.5 资源页 第19章 方法的调用与返回 19.1 方法调用 19.1.1 Java方法的调用 19.1.2...
第18章 finally子句 18.1 微型子例程 18.2 不对称的调用和返回 18.3 一个模拟:“Hop Around” 18.4 随书光盘 18.5 资源页 第19章 方法的调用与返回 19.1 方法调用 19.1.1 Java方法的调用 19.1.2 ...
本实验旨在让学生深入理解归结原理及其在解决实际问题中的应用。 首先,我们需要了解归结的基本概念。归结是基于一阶逻辑的一种证明方法,它通过消除互补的逻辑元素(文字)来简化问题,直到得到一个答案子句,这个...
在本篇笔记中,李兴华老师详细介绍了多表查询的基本语法、左右连接、交叉连接、自然连接、 USING 子句、ON 子句等多种连接方式,并对组函数和分组统计进行了深入解释。 多表查询是 Oracle 中的一种基本查询方式,...
在提供的"子句消解实验报告.doc"文件中,读者可以期待看到以上各部分的详细内容,这将有助于深入理解子句消解的原理及其在实际问题中的应用。通过这个实验报告,不仅可以学习到理论知识,还能了解到如何将理论应用于...
尚硅谷的MySQL笔记可能是为了帮助学习者深入理解和掌握MySQL的相关知识而编写的。这份笔记可能包含了从基础概念到高级特性的全面讲解,包括但不限于SQL语言、数据类型、数据库设计、索引、事务处理、视图、存储过程...
MySQL是世界上最受欢迎的关系型数据库管理系统(RDBMS)之一,尤其在Web开发领域中广泛应用。SQL(Structured Query Language)是用于管理和操作数据库的语言,包括数据查询、数据更新、数据插入和数据删除等操作。...
Oracle使用技巧之case子句的用途.docx