处理代码的方法、处理异常的方法以及各自的装置制造方法及图纸

技术编号:33551624 阅读:12 留言:0更新日期:2022-05-26 22:47
本说明书实施例提供处理代码的方法、处理异常的方法以及各自的装置,其中所述处理代码的方法包括:读取程序源代码经编译后生成的字节码文件;定位所述字节码文件包含的目标方法中需要捕获异常的代码区域;基于字节码操作方式对所述代码区域进行添加异常捕获块的处理,得到处理后的字节码文件,其中,所述添加异常捕获块的处理包括:在所述代码区域的开始添加受监测块的开始标签、在所述代码区域的结尾添加受监测块的结束标签以及为所述受监测块添加对应的异常处理块,其中,所述异常处理块,用于对所述受监测块捕获的异常进行处理。于对所述受监测块捕获的异常进行处理。于对所述受监测块捕获的异常进行处理。

【技术实现步骤摘要】
处理代码的方法、处理异常的方法以及各自的装置


[0001]本说明书实施例涉及计算机
,特别涉及处理代码的方法、处理异常的方法。本说明书一个或者多个实施例同时涉及处理代码的装置,处理异常的装置、计算设备,以及计算机可读存储介质。

技术介绍

[0002]随着计算机技术的发展,软件产品提供的功能越来越丰富。软件产品例如SDK(软件开发工具包)可以接入供应商的应用程序,为其补充一些软件能力。由于软件产品会接入不同供应商的应用程序,而每个供应商库的稳定性不一,包括软件产品自身也可能因为测试例覆盖度、供应商的应用程序的场景适配等问题,而引发各种各样的异常。这些异常可能导致应用程序crash(崩溃),给供应商的应用程序带来较差的用户体验。
[0003]因此,如何增强稳定性,成了软件产品的一个非常核心的考量要素。

技术实现思路

[0004]有鉴于此,本说明书实施例提供了处理代码的方法、处理异常的方法。本说明书一个或者多个实施例同时涉及处理代码的装置、处理异常的装置、计算设备以及计算机可读存储介质,以解决现有技术中存在的技术缺陷。
[0005]根据本说明书实施例的第一方面,提供了一种处理代码的方法,包括:读取程序源代码经编译后生成的字节码文件;定位所述字节码文件包含的目标方法中需要捕获异常的代码区域;基于字节码操作方式对所述代码区域进行添加异常捕获块的处理,得到处理后的字节码文件,其中,所述添加异常捕获块的处理包括:在所述代码区域的开始添加受监测块的开始标签、在所述代码区域的结尾添加受监测块的结束标签以及为所述受监测块添加对应的异常处理块,其中,所述异常处理块,用于对所述受监测块捕获的异常进行处理。
[0006]可选地,所述定位所述字节码文件包含的目标方法中需要捕获异常的代码区域,包括:基于ASM框架提供的MethodVisitor接口遍历所述字节码文件中的目标方法;所述基于字节码操作方式对所述代码区域进行添加异常捕获块的处理,包括:基于MethodVisitor接口,每遍历到一个目标方法,在该目标方法的原有代码的开始位置添加受监测块的开始标签,在该目标方法的原有代码的结尾位置添加受监测块的结束标签以及为所述受监测块添加对应的异常处理块。
[0007]可选地,所述在目标方法的原有代码的开始位置添加受监测块的开始标签,包括:利用MethodVisitor接口的onMethodEnter,或者,利用MethodVisitor接口的visitLabel的第一次进入,在该目标方法的原有代码的开始位置添加受监测块的开始标签。
[0008]可选地,所述在目标方法的原有代码的结尾位置添加受监测块的结束标签以及为所述受监测块添加对应的异常处理块,包括:利用MethodVisitor接口的onMethodExit,在目标方法的原有代码的结尾位置添加受监测块的结束标签,并通过解释器得到该目标方法的返回值,通过调用所述返回值的类型对应的添加代码块程序,在受监测块的结束标签之
后添加对应的异常处理块。
[0009]根据本说明书实施例的第二方面,提供了一种处理代码的装置,包括:读取模块,被配置为读取程序源代码经编译后生成的字节码文件。定位模块,被配置为定位所述字节码文件包含的目标方法中需要捕获异常的代码区域。代码添加模块,被配置为基于字节码操作方式对所述代码区域进行添加异常捕获块的处理,得到处理后的字节码文件,其中,所述添加异常捕获块的处理包括:在所述代码区域的开始添加受监测块的开始标签、在所述代码区域的结尾添加受监测块的结束标签以及为所述受监测块添加对应的异常处理块,其中,所述异常处理块,用于对所述受监测块捕获的异常进行处理。
[0010]根据本说明书实施例的第三方面,提供了一种处理异常的方法,包括:当软件产品接入应用程序并运行时,基于所述软件产品中的受监测块捕获异常,其中,所述软件产品是基于字节码文件生成的,所述字节码文件是程序源代码经编译后、基于字节码操作方式添加异常捕获块得到的字节码文件,所述异常捕获块包括受监测块和异常处理块,所述受监测块的开始标签位于目标方法中需要捕获异常的代码区域的开始位置,所述受监测块的结束标签以及所述异常处理块位于所述代码区域的结尾位置;基于所述软件产品中的异常处理块对所述异常进行处理。
[0011]可选地,还包括:通过捕获全局异常的方式捕获跨线程的异常,得到异常信息;判断所述异常信息是否来源于子线程;如果是,确定引发所述异常信息的方法;判断所述方法是否为所述软件产品内的方法;如果是,对所述异常信息对应的异常进行处理。
[0012]可选地,所述基于所述软件产品中的异常处理块对所述异常进行处理,包括:基于所述软件产品中的异常处理块,阻止所述受监测块捕获的异常向程序运行其上的系统传递。
[0013]可选地,所述基于所述软件产品中的异常处理块对所述异常进行处理,还包括:基于所述软件产品中的异常处理块,将受监测块捕获的异常上报给异常处理平台。
[0014]根据本说明书实施例的第四方面,提供了一种处理异常的装置,包括:捕获模块,被配置为当软件产品接入应用程序并运行时,基于所述软件产品中的受监测块捕获异常,其中,所述软件产品是基于字节码文件生成的,所述字节码文件是程序源代码经编译后、基于字节码操作方式添加异常捕获块得到的字节码文件,所述异常捕获块包括受监测块和异常处理块,所述受监测块的开始标签位于目标方法中需要捕获异常的代码区域的开始位置,所述受监测块的结束标签以及所述异常处理块位于所述代码区域的结尾位置。处理模块,被配置为基于所述软件产品中的异常处理块对所述异常进行处理。
[0015]根据本说明书实施例的第五方面,提供了一种计算设备,包括:存储器和处理器;所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令:读取程序源代码经编译后生成的字节码文件,定位所述字节码文件包含的目标方法中需要捕获异常的代码区域,基于字节码操作方式对所述代码区域进行添加异常捕获块的处理,得到处理后的字节码文件,其中,所述添加异常捕获块的处理包括:在所述代码区域的开始添加受监测块的开始标签、在所述代码区域的结尾添加受监测块的结束标签以及为所述受监测块添加对应的异常处理块,其中,所述异常处理块,用于对所述受监测块捕获的异常进行处理;或者,当软件产品接入应用程序并运行时,基于所述软件产品中的受监测块捕获异常,其中,所述软件产品是基于字节码文件生成的,所述字节码文件是程序源代码经编译
后、基于字节码操作方式添加异常捕获块得到的字节码文件,所述异常捕获块包括受监测块和异常处理块,所述受监测块的开始标签位于目标方法中需要捕获异常的代码区域的开始位置,所述受监测块的结束标签以及所述异常处理块位于所述代码区域的结尾位置;基于所述软件产品中的异常处理块对所述异常进行处理。
[0016]根据本说明书实施例的第六方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现本说明书任意实施例所述处理代码的方法的步骤,或本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种处理代码的方法,包括:读取程序源代码经编译后生成的字节码文件;定位所述字节码文件包含的目标方法中需要捕获异常的代码区域;基于字节码操作方式对所述代码区域进行添加异常捕获块的处理,得到处理后的字节码文件,其中,所述添加异常捕获块的处理包括:在所述代码区域的开始添加受监测块的开始标签、在所述代码区域的结尾添加受监测块的结束标签以及为所述受监测块添加对应的异常处理块,其中,所述异常处理块,用于对所述受监测块捕获的异常进行处理。2.根据权利要求1所述的方法,所述定位所述字节码文件包含的目标方法中需要捕获异常的代码区域,包括:基于ASM框架提供的MethodVisitor接口遍历所述字节码文件中的目标方法;所述基于字节码操作方式对所述代码区域进行添加异常捕获块的处理,包括:基于MethodVisitor接口,每遍历到一个目标方法,在该目标方法的原有代码的开始位置添加受监测块的开始标签,在该目标方法的原有代码的结尾位置添加受监测块的结束标签以及为所述受监测块添加对应的异常处理块。3.根据权利要求2所述的方法,所述在该目标方法的原有代码的开始位置添加受监测块的开始标签,包括:利用MethodVisitor接口的onMethodEnter,或者,利用MethodVisitor接口的visitLabel的第一次进入,在该目标方法的原有代码的开始位置添加受监测块的开始标签。4.根据权利要求2所述的方法,所述在该目标方法的原有代码的结尾位置添加受监测块的结束标签以及为所述受监测块添加对应的异常处理块,包括:利用MethodVisitor接口的onMethodExit,在该目标方法的原有代码的结尾位置添加受监测块的结束标签,并通过解释器得到该目标方法的返回值,通过调用所述返回值的类型对应的添加代码块程序,为所述受监测块添加对应的异常处理块。5.一种处理代码的装置,包括:读取模块,被配置为读取程序源代码经编译后生成的字节码文件;定位模块,被配置为定位所述字节码文件包含的目标方法中需要捕获异常的代码区域;代码添加模块,被配置为基于字节码操作方式对所述代码区域进行添加异常捕获块的处理,得到处理后的字节码文件,其中,所述添加异常捕获块的处理包括:在所述代码区域的开始添加受监测块的开始标签、在所述代码区域的结尾添加受监测块的结束标签以及为所述受监测块添加对应的异常处理块,其中,所述异常处理块,用于对所述受监测块捕获的异常进行处理。6.一种处理异常的方法,包括:当软件产品接入应用程序并运行时,基于所述软件产品中的受监测块捕获异常,其中,所述软件产品是基于字节码文件生成的,所述字节码文件是程序源代码经编译后、基于字节码操作方式添加异常捕获块得到的字节码文件,所述异常捕获块包括受监测块和异常处理块,所述受监测块的开始标签位于目标方法中需要捕获异常的代码区域的开始位置,所述...

【专利技术属性】
技术研发人员:刘江浩
申请(专利权)人:阿里巴巴中国有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1