书签 分享 收藏 举报 版权申诉 / 11

一种基于JAVA的异常处理方法和异常处理机制.pdf

  • 上传人:1****2
  • 文档编号:1026766
  • 上传时间:2018-03-26
  • 格式:PDF
  • 页数:11
  • 大小:407.57KB
  • 摘要
    申请专利号:

    CN201010569157.8

    申请日:

    2010.11.26

    公开号:

    CN102004694A

    公开日:

    2011.04.06

    当前法律状态:

    授权

    有效性:

    有权

    法律详情:

    专利权人的姓名或者名称、地址的变更IPC(主分类):G06F 11/36变更事项:专利权人变更前:北京握奇数据系统有限公司变更后:北京握奇数据股份有限公司变更事项:地址变更前:100015 北京市朝阳区东直门外西八间房万红西街2号燕东商务花园变更后:100015 北京市朝阳区东直门外西八间房万红西街2号燕东商务花园|||授权|||实质审查的生效IPC(主分类):G06F 11/36申请日:20101126|||公开

    IPC分类号:

    G06F11/36

    主分类号:

    G06F11/36

    申请人:

    北京握奇数据系统有限公司

    发明人:

    曾林

    地址:

    100015 北京市朝阳区东直门外西八间房万红西街2号燕东商务花园

    优先权:

    专利代理机构:

    北京润泽恒知识产权代理有限公司 11319

    代理人:

    苏培华

    PDF完整版下载: PDF下载
    内容摘要

    本发明提供了一种基于Java的异常处理方法,包括以下步骤:建立CAP文件索引记录模块,用于记录CAP文件的索引信息;根据CAP文件索引记录模块中记录的索引信息来找到对应的CAP文件,遍历所述CAP文件的异常信息处理组并捕获异常。本发明的基于Java的异常处理方法,通过建立CAP文件索引记录模块来记录CAP文件的索引信息,当产生异常时,通过该索引信息来查找对应的CAP文件,通过遍历该CAP文件的异常处理信息组,便可以捕获异常降低了智能卡异常捕获处理的时延、提高了运行效率。本发明还提供一种基于Java的异常处理机制。

    权利要求书

    1.一种基于Java的异常处理方法,其特征在于,包括以下步骤:建立CAP文件索引记录模块,用于记录CAP文件的索引信息;根据CAP文件索引记录模块中记录的索引信息来找到对应的CAP文件,遍历所述CAP文件的异常信息处理组并捕获异常。2.如权利要求1所述的方法,其特征在于,所述CAP文件索引记录模块记录的索引信息为CAP文件的句柄。3.如权利要求2所述的方法,其特征在于,所述建立CAP文件索引记录模块包括:建立与Java方法栈对应的CAP文件句柄栈,所述CAP文件句柄栈中的栈顶元素为正在执行的Java方法所属的CAP文件的句柄。4.如权利要求3所述的方法,其特征在于,所述建立与Java方法栈对应的CAP文件句柄栈的方法包括:系统调用CAP文件的Java方法并建立一个堆栈帧作为Java方法栈的栈内元素压入到Java方法栈中时,系统将与该方法对应的CAP文件的句柄作为CAP文件句柄栈的栈内元素压入到CAP文件句柄栈中。5.如权利要求4所述的方法,其特征在于,所述方法还包括在执行完CAP文件的Java方法后,CAP文件句柄栈弹出其中与该Java方法对应的栈顶元素。6.如权利要求1所述的方法,其特征在于,所述建立CAP文件索引记录模块包括建立全局注册表,加载CAP文件的同时在全局注册表中增加CAP文件的索引信息。7.如权利要求6所述的方法,其特征在于,所述索引信息包括CAP文件的句柄及该CAP文件的方法组件存储空间的地址范围。8.如权利要求7所述的方法,其特征在于,所述方法还包括通过程序计数器记录的字节码地址来匹配全局注册表中记录的方法组件存储空间的地址范围,获取对应的CAP文件句柄。9.一种基于Java的异常处理机制,其特征在于,包括:CAP文件索引记录模块,用于记录CAP文件的索引信息;异常处理接口,用于输出所述CAP文件索引记录模块所记录的索引信息;异常捕获模块,根据所述异常处理接口提供的CAP文件的索引信息找到对应的CAP文件,遍历所述CAP文件的异常信息处理组并进行异常捕获。10.如权利要求9所述的异常处理机制,其特征在于,所述CAP文件索引记录模块为与Java方法栈对应的CAP文件句柄栈,所述CAP文件句柄栈中的栈顶元素为正在执行的Java方法所属的CAP文件的句柄。11.如权利要求9所述的异常处理机制,其特征在于,所述CAP文件索引记录模块为全局注册表,所述全局注册表记载CAP文件的句柄及该CAP文件的方法组件存储空间地址范围。12.如权利要求10或11所述的异常处理机制,其特征在于,所述CAP文件句柄是指针。

    说明书

    一种基于Java的异常处理方法和异常处理机制

    技术领域

    本发明涉及一种Java智能卡的数据处理技术,特别涉及一种基于Java的异常处理方法及异常处理机制。

    背景技术

    Java语言作为一种较为成熟的编程语言,被广泛应用到各种程序的编程中。例如,现有的电信智能卡大多使用Java语言编写应用程序,并将应用程序储存在智能卡中。随着计算机的日益普及和快速发展,人们对应用程序的功能提出越来越高的要求。伴随着功能的提高与加强,程序的复杂度也随之增加,由此导致程序的稳定性和可靠性下降,使程序在运行过程中会出现各种异常状况。为了跟踪、查找程序发生异常的确切位置,人们开发了多种捕获程序异常的方法。

    一般来说Java智能卡的应用程序通过调用API(Application Programming Interface,应用程序编程接口)类数据包实现相应的功能。API类数据包(如Java.io,Java.1ang等数据包)主要以CAP(Converted Applet Package,程序转换包)文件的格式下载到Java智能卡中。

    每个CAP包都有自己的异常处理信息组,通常会通过遍历CAP包的异常处理信息组来对Java智能卡进行异常捕获。Java智能卡虚拟机规范中限定抛出异常时的字节码地址只可能在该字节码所属CAP包中的异常处理信息组中被捕获。因此除抛出异常时的字节码所属CAP包外,其他CAP包的异常处理信息组中是不可能捕获该异常的。当Java代码抛出异常时,传统的做法是根据各个CAP包在Java卡运行环境(JCRE,java card runtime environment)中的注册先后顺序依次分别遍历所有CAP包的异常处理信息组,直到异常被捕获。

    很明显,对其他CAP包的异常处理信息组的遍历操作会延迟异常捕获的时间,并且当Java智能卡装载的CAP包越多,延迟时间也会越长,直接影响到Java虚拟机的执行性能。

    发明内容

    本发明所要解决的技术问题是提供一种基于Java的异常处理方法及异常处理机制,能够快速的查找到对应的CAP文件,避免了对Java智能卡上其他CAP文件异常处理信息组的遍历,降低了智能卡异常捕获处理的时延、提高了运行效率。

    为了解决上述问题,本发明公开了一种基于Java的异常处理方法,包括以下步骤:

    建立CAP文件索引记录模块,用于记录CAP文件的索引信息;

    根据CAP文件索引记录模块中记录的索引信息来找到对应的CAP文件,遍历所述CAP文件的异常信息处理组并捕获异常。

    进一步地,所述CAP文件索引记录模块记录的索引信息为CAP文件的句柄。

    进一步地,所述建立CAP文件索引记录模块包括:

    建立与Java方法栈对应的CAP文件句柄栈,所述CAP文件句柄栈中的栈顶元素为正在执行的Java方法所属的CAP文件的句柄。

    进一步地,所述建立与Java方法栈对应的CAP文件句柄栈的方法包括:

    系统调用CAP文件的Java方法并建立一个堆栈帧作为Java方法栈的栈内元素压入到Java方法栈中时,系统将与该方法对应的CAP文件的句柄作为CAP文件句柄栈的栈内元素压入到CAP文件句柄栈中。

    进一步地,所述方法还包括在执行完CAP文件的Java方法后,CAP文件句柄栈弹出其中与该Java方法对应的栈顶元素。

    进一步地,所述建立CAP文件索引记录模块包括建立全局注册表,加载CAP文件的同时在全局注册表中增加CAP文件的索引信息。

    进一步地,所述索引信息包括CAP文件的句柄及该CAP文件的方法组件存储空间的地址范围。

    进一步地,所述方法还包括通过程序计数器记录的字节码地址来匹配全局注册表中记录的方法组件存储空间的地址范围,获取对应的CAP文件句柄。

    为了解决上述问题,本发明还公开了一种基于Java的异常处理机制,包括:CAP文件索引记录模块,用于记录CAP文件的索引信息;异常处理接口,用于输出所述CAP文件索引记录模块所记录的索引信息;异常捕获模块,根据所述异常处理接口提供的CAP文件的索引信息找到对应的CAP文件,遍历所述CAP文件的异常信息处理组并进行异常捕获。

    进一步地,所述CAP文件索引记录模块为与Java方法栈对应的CAP文件句柄栈,所述CAP文件句柄栈中的栈顶元素为正在执行的Java方法所属的CAP文件的句柄。

    进一步地,所述CAP文件索引记录模块为全局注册表,所述全局注册表记载CAP文件的句柄及该CAP文件的方法组件存储空间地址范围。

    进一步地,所述CAP文件句柄是指针。

    与现有技术相比,本发明具有以下优点:

    本发明的基于Java的异常处理方法及异常处理机制,通过建立CAP文件索引记录模块来记录CAP文件的索引信息,当产生异常时,通过该索引信息来查找对应的CAP文件,通过遍历该CAP文件的异常处理信息组,便可以捕获异常。

    在具体实现上,通过建立于Java方法栈对应的CAP文件句柄栈或者全局注册表的方式,可以根据Java方法栈中的方法与CAP文件句柄栈中的句柄一一对应的关系或全局注册表中记载的method component(方法组件)存储空间的地址范围来获取CAP文件的句柄,从而可以快速的查找到对应的CAP文件。避免了对Java智能卡上其他CAP文件异常处理信息组的遍历,降低了智能卡异常捕获处理的时延、提高了运行效率。

    附图说明

    图1是本发明的一种基于Java的异常处理方法实施一的流程图;

    图2是本发明的一种基于Java的异常处理方法实施二的流程图;

    图3-图4是本发明的一种基于Java的异常处理方法实施二的示意图;

    图5是本发明的一种基于Java的异常处理方法实施三的流程图;

    图6是本发明的一种基于Java的异常处理机制实施例一的示意图;

    图7是本发明的一种基于Java的异常处理机制实施例二的示意图。

    具体实施方式

    为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

    请参照图1,示出本发明的一种基于Java的异常处理方法实施一,包括以下步骤:

    步骤101,建立CAP文件索引记录模块。

    CAP文件索引记录模块用于记录CAP文件的索引信息,例如CAP文件的句柄。通过该索引信息可以查找到对应的CAP文件。CAP文件索引记录模块的形式并不限定,只要能记录CAP文件的位置,并通过该索引信息找到对应的CAP文件即可。例如,CAP文件索引记录模块可以是与Java方法栈对应的CAP文件句柄栈,也可以是一个全局注册表等等。

    步骤102,根据CAP文件索引记录模块中的索引信息来找到对应的CAP文件,遍历所述CAP文件的异常信息处理组并捕获异常。

    当Java代码抛出异常时,通过CAP文件索引记录模块中记录的CAP文件索引信息,找到对应的CAP文件,遍历该CAP文件中的异常处理信息组,捕获异常。

    下面对上述方法进行进一步的说明。请参照图2,示出本发明的一种基于Java的异常处理方法实施二,包括以下步骤:

    步骤201,建立与Java方法栈对应的CAP文件句柄栈。

    CAP文件句柄栈中的句柄与Java方法栈中的方法一一对应,其中CAP文件的句柄可以是指针。Java卡规范包括Java卡虚拟机(JVM,java card virtual machine)和Java卡运行环境和Java卡应用编程接口三个部分。Java卡虚拟机维护一个PC(程序计数器)和一个方法栈。PC(程序计数器)存储当前要执行的指令(java字节码)的存储地址。Java方法栈保存了一个方法(function)调用时所需要的维护信息,一个方法调用所需要的维护信息称之为堆栈帧。堆栈帧一般包含如下几方面的信息:1.方法的返回地址和参数;2.临时变量:包括方法的非静态局部变量以及编译器自动生成的其他临时变量。

    Java卡在接收到应用协议数据单元(APDU,Application Protocol Data Unit)后,由Java卡运行环境负责找到当前Applet的应用协议数据单元处理方法(Applet类的process方法),并初始化PC(程序计数器)为该方法的地第一条指令的地址,同时构造一个堆栈帧压入Java方法栈。因为是在Java卡运行环境中调用该方法,所以堆栈帧中方法返回地址信息指向Java卡运行环境。与此同时,将该方法所属CAP文件句柄压入CAP文件句柄栈。Applet的应用协议数据单元处理方法的方法体中可以嵌套调用方法,每一个方法调用都会构建一个堆栈帧作为Java方法栈的栈内元素并压入到Java方法栈。被调用的方法可以属于不同的CAP文件,因此我们在方法调用的同时将被调用方法所属CAP文件的句柄作为CAP文件句柄栈的栈内元素压入CAP文件句柄栈。CAP文件句柄栈中的栈顶元素为当前正在执行的Java方法所属的CAP文件的句柄。当一个方法结束时,Java虚拟机从Java方法栈中弹出一个堆栈帧,并初始化PC为该堆栈帧中记录的方法返回地址继续执行。与此同时,从CAP文件句柄栈中弹出一个CAP文件句柄。

    步骤202,根据CAP文件句柄来找到对应的CAP文件,遍历该CAP文件的异常信息处理组并捕获异常。

    若在执行某一个方法时,Java代码抛出异常,则此时可以根据上述Java方法栈与CAP文件句柄栈的对应关系,在CAP文件句柄栈找到该方法对应的CAP文件句柄,进而找到与该CAP文件句柄对应的CAP文件。通过遍历该CAP文件的异常处理信息组,则可以捕获异常。

    下面结合一个具体的实例对本实施例进行详细的说明。

    请参照图3,系统首先调用了CAP文件A中的方法a,在方法a的执行过程中调用了CAP文件B中的方法b;在方法b的执行过程中调用了CAP文件A中的方法a’。系统在调用CAP文件A中的方法a建立一个堆栈帧作为Java方法栈的栈内元素压入到Java方法栈中,同时,将与方法a对应的CAP文件A的句柄作为CAP文件句柄栈的栈内元素压入CAP文件句柄栈中。若在方法a执行过程中调用CAP文件B中的方法b时,同样会建立一个堆栈帧压入到Java方法栈中,同时,将CAP文件B的句柄压入CAP文件句柄栈中。同样的,对后续调用的CAP文件A中的方法a’也采用相同的方法将CAP文件A的句柄压入CAP文件句柄栈中。

    请参照图4,当方法a’执行完成返回时,CAP文件句柄栈把栈顶元素弹出。若在方法b的执行的过程中抛出异常时,系统只需要获取CAP文件句柄栈的栈顶元素,即CAP文件B的句柄,然后遍历该CAP文件B的异常处理信息组,则可捕获异常。无需遍历其他的CAP文件。

    请参照图5,示出本发明的一种基于Java的异常处理方法实施三,包括以下步骤:

    步骤301,建立一个全局注册表。

    建立的全局注册表中,每个CAP文件对应一个表项,每加载一个CAP文件就在全局注册表中增加一项,记录该CAP文件对应的文件句柄、method_component(方法组件)存储空间的起始地址及结束地址。CAP文件句柄是用于指针。

    步骤302,根据全局注册表中CAP文件句柄和method_component(方法组件)存储空间地址范围,找到对应的CAP文件,捕获异常。

    在java代码抛出异常后,遍历该全局注册表,用PC(程序计数器)记录的字节码地址来匹配全局注册表中记录的method_component(方法组件)地址范围,找到第一个匹配的注册表项,获取对应的CAP文件句柄。通过获取的CAP文件句柄找到与该CAP文件句柄对应的CAP文件及该CAP文件的异常处理信息组。通过遍历该CAP文件的异常处理信息组,则可以捕获异常。

    下面结合一个具体实例对本实施例进行详细说明。

    在CAP文件下载到Java智能卡上时,首先Java智能卡分配一段空间存储它:比如,CAP文件A在智能卡上的存储地址为:0x00000000-0x00003000。其中method_component(方法组件)存储空间的地址范围为:0x00001000-0x00002000。然后分配一个句柄“1”,用于标识CAP文件A。

    因此,在加载CAP文件A时,就在全局注册表中加一个表项,其中内容为:

    CAP文件A句柄=1;

    method_component(方法组件)存储空间的起始地址:0x00001000;

    method_component(方法组件)存储空间的结束地址:0x00002000。

    若在执行CAP文件A的方法时,java代码抛出异常,则遍历该全局注册表,用PC(程序计数器)记录的字节码地址匹配注册表中记录的method_component(方法组件)存储空间地址范围为:0x00001000-0x00002000,从而获取对应的CAP文件句柄。通过获取的CAP文件句柄找到对应的CAP文件A及该CAP文件A的异常处理信息组。通过遍历CAP文件A的异常处理信息组,则可以捕获异常。

    请参照图6,示出本发明的一种基于Java的异常处理机制实施例。该异常处理机制100包括CAP文件索引记录模块10、异常处理接口20、及异常捕获模块30。

    CAP文件索引记录模块10可以是与Java方法栈对应的CAP文件句柄栈,也可以是一个全局注册表。用于记录CAP文件的句柄等索引信息,以快速的查找到对应的CAP文件。

    当CAP文件索引记录模块10为CAP文件句柄栈时,里面所记录的是CAP文件句柄,每一个CAP文件句柄栈中的栈顶始终与当前Java方法所属CAP文件一致。当CAP文件索引记录模块10为全局注册表时,里面所记录的是CAP文件句柄及method_component(方法组件)存储空间的地址范围,通过method_component(方法组件)存储空间的地址范围来查找对应的CAP文件句柄。

    异常处理接口20,用于输出CAP文件索引记录模块10中的记录信息。当CAP文件索引记录模块10为CAP文件句柄栈时,输出CAP文件句柄栈栈顶的CAP文件句柄对应的CAP文件。当CAP文件索引记录模块10为全局注册表时,输出与method_component(方法组件)存储空间的地址范围对应的CAP文件句柄。

    异常捕获模块30,用于对异常进行捕获。异常处理接口20将CAP文件索引记录模块10中的记录信息输出给异常捕获模块30,该异常捕获模块30通过CAP文件句柄等信息来找到对应的CAP文件,通过遍历该CAP文件及其中的异常处理信息组来捕获异常。

    请参照图7,进一步地,该异常处理机制100还包括程序计数器40,程序计数器40存储当前要执行的指令(java字节码)的存储地址。当产生异常时,通过程序计数器40中记录的字节码地址匹配全局注册表中记录的method_component(方法组件)地址范围,从而获取对应的CAP文件句柄,并将获取的句柄信息通过异常处理接口20传输给异常捕获模块30。

    本发明的基于Java的异常处理方法及捕获装置通过建立CAP文件索引记录模块来记录CAP文件的索引信息,当产生异常时,通过该索引信息来查找对应的CAP文件,通过遍历该CAP文件的异常处理信息组,便可以捕获异常。在具体实现上,通过建立于Java方法栈对应的CAP文件句柄栈及全局注册表的方式,可以根据Java方法栈中的方法与CAP文件句柄栈中的句柄一一对应的关系或全局注册表中记载的method_component(方法组件)存储空间的地址范围来获取CAP文件的句柄,从而可以快速的查找到对应的CAP文件。避免了对Java智能卡上其他CAP文件异常处理信息组的遍历,降低了智能卡异常捕获处理的时延、提高了运行效率。

    对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

    本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

    以上对本发明所提供的一种基于Java的异常处理方法和异常处理机制,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

    关 键  词:
    一种 基于 JAVA 异常 处理 方法 机制
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:一种基于JAVA的异常处理方法和异常处理机制.pdf
    链接地址:https://www.zhuanlichaxun.net/p-1026766.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1