为代码添加异常处理模块的方法及装置制造方法及图纸

技术编号:32130714 阅读:28 留言:0更新日期:2022-01-29 19:29
本发明专利技术实施例公开了一种为代码添加异常处理模块的方法及装置,该方法包括:将待添加异常处理模块的代码解析为抽象语法树;确定出所述抽象语法树中的待处理函数;根据所述抽象语法树确定出待处理函数的函数名称和函数位置信息;根据待处理函数的函数体内容、函数名称以及函数位置信息生成待处理函数对应的异常处理模块;用异常处理模块替换掉所述抽象语法树中对应的待处理函数的函数体内容,得到处理后的抽象语法树,并将处理后的抽象语法树转化为代码,得到添加异常处理模块后的代码。本发明专利技术有助于提高为代码添加异常处理模块的效率。率。率。

【技术实现步骤摘要】
为代码添加异常处理模块的方法及装置


[0001]本专利技术涉及程序开发
,具体而言,涉及一种为代码添加异常处理模块的方法及装置。

技术介绍

[0002]Web应用程序的代码主要包括3部分,分别是html文件、css文件和JavaScript文件。其中Web工程应用程序的鲁棒性主要取决于JavaScript代码编写是否健壮。由于JavaScript语言是单线程,若JavaScript的代码出现错误,会导致后续JavaScript代码无法执行,最终导致web应用无法正常运行。
[0003]目前为了减少JavaScript运行异常可以采用添加异常处理模块的方式,异常处理模块由try catch语句组成,其中try语句中是业务逻辑信息,catch语句可以打印异常信息。在web应用代码运行异常时,在catch中抛出异常信息,同时应用程序会继续执行(但是此时应用逻辑可能有异常,因为程序已经异常)。
[0004]目前在为代码添加异常处理模块时,开发者需要手动为每个函数添加try catch异常处理模块,重复性强,效率低。此外,一个大型web应用往往由多个开发者完成,每个开发者在代码编写规范不一致,在对每个函数添加try catch异常处理模块的执行力不一样,导致在web应用中异常处理模块或有或无,无法保证所有的函数都添加了异常处理模块。
[0005]由此可见,如何提高为代码添加异常处理模块的效率是本领域急需解决的技术问题。

技术实现思路

[0006]本专利技术为了解决目前的为代码添加异常处理模块效率较低的技术问题,提出了一种为代码添加异常处理模块的方法及装置。
[0007]为了实现上述目的,根据本专利技术的一个方面,提供了一种为代码添加异常处理模块的方法,该方法包括:
[0008]将待添加异常处理模块的代码解析为抽象语法树;
[0009]确定出所述抽象语法树中的待处理函数;
[0010]根据所述抽象语法树确定出待处理函数的函数名称和函数位置信息;
[0011]根据待处理函数的函数体内容、函数名称以及函数位置信息生成待处理函数对应的异常处理模块;
[0012]用异常处理模块替换掉所述抽象语法树中对应的待处理函数的函数体内容,得到处理后的抽象语法树,并将处理后的抽象语法树转化为代码,得到添加异常处理模块后的代码。
[0013]可选的,根据待处理函数的函数体内容、函数名称以及函数位置信息生成待处理函数对应的异常处理模块,具体包括:
[0014]根据待处理函数的函数名称、待处理函数的函数位置信息以及预设的错误信息生
成catch语句;
[0015]根据待处理函数的函数体内容生成try语句;
[0016]根据所述catch语句和所述try语句生成待处理函数对应的异常处理模块。
[0017]可选的,所述确定出所述抽象语法树中的待处理函数,具体包括:
[0018]识别所述抽象语法树中的函数;
[0019]若识别出的函数的函数注释中不存在有不添加异常处理标识,则确定该识别出的函数为待处理函数。
[0020]可选的,所述若识别出的函数的函数注释中不存在有不添加异常处理标识,则确定该识别出的函数为待处理函数,具体包括:
[0021]若识别出的函数的函数注释中不存在有不添加异常处理标识,并且该识别出的函数的函数体内容多于预设行,则确定该识别出的函数为待处理函数。
[0022]可选的,所述根据所述抽象语法树确定出待处理函数的函数名称和函数位置信息,具体包括:
[0023]若待处理函数为函数声明,从函数声明抽象语法树中id属性下的name属性获取函数名称,从函数声明抽象语法树中loc属性下的start属性中的line属性获取函数位置信息。
[0024]可选的,所述根据所述抽象语法树确定出待处理函数的函数名称和函数位置信息,具体包括:
[0025]若待处理函数为函数表达式,从函数表达式抽象语法树的变量声明中的declarations的id属性下的name属性获取函数名称,从函数表达式抽象语法树中loc属性下的start属性中的line属性获取函数位置信息。
[0026]可选的,所述根据所述抽象语法树确定出待处理函数的函数名称和函数位置信息,具体包括:
[0027]若待处理函数为箭头函数,将箭头函数作为函数名称,从箭头函数抽象语法树中loc属性下的start属性中的line属性获取函数位置信息。
[0028]可选的,所述根据所述抽象语法树确定出待处理函数的函数名称和函数位置信息,具体包括:
[0029]若待处理函数为类函数,从类函数抽象语法树中的ClassMethod中key属性下的name属性获取函数名称,从类函数抽象语法树中loc属性下的start属性中的line属性获取函数位置信息。
[0030]为了实现上述目的,根据本专利技术的另一方面,提供了一种为代码添加异常处理模块的装置,该装置包括:
[0031]代码解析单元,用于将待添加异常处理模块的代码解析为抽象语法树;
[0032]待处理函数确定单元,用于确定出所述抽象语法树中的待处理函数;
[0033]函数信息确定单元,用于根据所述抽象语法树确定出待处理函数的函数名称和函数位置信息;
[0034]异常处理模块生成单元,用于根据待处理函数的函数体内容、函数名称以及函数位置信息生成待处理函数对应的异常处理模块;
[0035]异常处理模块添加单元,用于用异常处理模块替换掉所述抽象语法树中对应的待
处理函数的函数体内容,得到处理后的抽象语法树,并将处理后的抽象语法树转化为代码,得到添加异常处理模块后的代码。
[0036]可选的,所述异常处理模块生成单元包括:
[0037]catch语句生成模块,用于根据待处理函数的函数名称、待处理函数的函数位置信息以及预设的错误信息生成catch语句;
[0038]try语句生成模块,用于根据待处理函数的函数体内容生成try语句;
[0039]异常处理模块生成模块,用于根据所述catch语句和所述try语句生成待处理函数对应的异常处理模块。
[0040]为了实现上述目的,根据本专利技术的另一方面,还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述为代码添加异常处理模块的方法中的步骤。
[0041]为了实现上述目的,根据本专利技术的另一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序在计算机处理器中执行时实现上述为代码添加异常处理模块的方法中的步骤。
[0042]本专利技术的有益效果为:
[0043]本专利技术实施例通过将待添加异常处理模块的代码解析为抽象语法树,确定出所述抽象语法树中的待处理函数,根据所述抽象语法树确定出待处理函数的函数名称和函数位置信息,根据待处理函数的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种为代码添加异常处理模块的方法,其特征在于,包括:将待添加异常处理模块的代码解析为抽象语法树;确定出所述抽象语法树中的待处理函数;根据所述抽象语法树确定出待处理函数的函数名称和函数位置信息;根据待处理函数的函数体内容、函数名称以及函数位置信息生成待处理函数对应的异常处理模块;用异常处理模块替换掉所述抽象语法树中对应的待处理函数的函数体内容,得到处理后的抽象语法树,并将处理后的抽象语法树转化为代码,得到添加异常处理模块后的代码。2.根据权利要求1所述的为代码添加异常处理模块的方法,其特征在于,根据待处理函数的函数体内容、函数名称以及函数位置信息生成待处理函数对应的异常处理模块,具体包括:根据待处理函数的函数名称、待处理函数的函数位置信息以及预设的错误信息生成catch语句;根据待处理函数的函数体内容生成try语句;根据所述catch语句和所述try语句生成待处理函数对应的异常处理模块。3.根据权利要求1所述的为代码添加异常处理模块的方法,其特征在于,所述确定出所述抽象语法树中的待处理函数,具体包括:识别所述抽象语法树中的函数;若识别出的函数的函数注释中不存在有不添加异常处理标识,则确定该识别出的函数为待处理函数。4.根据权利要求3所述的为代码添加异常处理模块的方法,其特征在于,所述若识别出的函数的函数注释中不存在有不添加异常处理标识,则确定该识别出的函数为待处理函数,具体包括:若识别出的函数的函数注释中不存在有不添加异常处理标识,并且该识别出的函数的函数体内容多于预设行,则确定该识别出的函数为待处理函数。5.根据权利要求1所述的为代码添加异常处理模块的方法,其特征在于,所述根据所述抽象语法树确定出待处理函数的函数名称和函数位置信息,具体包括:若待处理函数为函数声明,从函数声明抽象语法树中id属性下的name属性获取函数名称,从函数声明抽象语法树中loc属性下的start属性中的line属性获取函数位置信息。6.根据权利要求1所述的为代码添加异常处理模块的方法,其特征在于,所述根据所述抽象语法树确定出待处理函数的函数名称和函数位置信息,具体包括:若待处理函数为函数表达式,从函数表达式抽象语法树的变量声明中的declarations的id属性下的name属性获取函数名称,从函数表达式抽象语法树中loc属...

【专利技术属性】
技术研发人员:孟繁贵梁锐
申请(专利权)人:中国建设银行股份有限公司
类型:发明
国别省市:

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

1