基于AST的异常捕获代码注入方法、装置及其应用制造方法及图纸

技术编号:33024744 阅读:25 留言:0更新日期:2022-04-15 08:58
本申请提出了一种基于AST的异常捕获代码注入方法、装置及其应用,该方法包括:获取第一源代码,并根据第一源代码生成第一抽象语法树,第一抽象语法树包括至少一节点;遍历第一抽象语法树的每一节点,将包含await关键字的节点作为目标节点,并对应每一所目标节点创建对应的替换节点组,其中替换节点组包括空白try节点和catch节点;将每一目标节点填充到替换节点组中的空白try节点内,并用替换节点组替代第一抽象语法树中对应的目标节点得到第二抽象语法树;将第二抽象语法树转换为新的源代码作为第二源代码。该方法减少了源代码中大量重复的代码编写工作,对于多异步函数并行的情况,只会在异步函数最外层进行异常捕获和异常抛出,提高代码的精简程度。提高代码的精简程度。提高代码的精简程度。

【技术实现步骤摘要】
基于AST的异常捕获代码注入方法、装置及其应用


[0001]本申请涉及代码构建领域,特别是涉及一种基于AST的异常捕获代码注入方法、装置及其应用。

技术介绍

[0002]异步函数是编程中经常使用的重要函数之一,统一的JavaScript异步编程方案Promise在ES2015规范中就已经出现,在此之前的异步编程方案经常出现回调函数层层嵌套的“回调地狱”,导致代码的可维护性很差。Promise规范了异步编程的接口,以链式调用这种方便的方法赢得了大多数开发者的喜好。在ES2016规范中更进一步定义了async/await关键字,让异步函数的调用变得扁平化起来,大大提高了代码可读性,降低了代码的维护成本。
[0003]通常,为了代码和使用代码构建的系统的健壮性,或者是为了捕捉异步函数调用时的错误,通常会使用try和catch关键字来捕获异常,也就是将可能会出现错误的代码作为保护代码包裹在try代码块中,并用catch代码块捕获异常的具体信息以及进行相应的异常处理。
[0004]但大量的try/catch代码块不仅会造成代码的可读性变差本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.基于AST的异常捕获代码注入方法,其特征在于,包括以下步骤:获取第一源代码,并根据所述第一源代码生成第一抽象语法树,所述第一抽象语法树包括至少一节点;遍历所述第一抽象语法树的每一所述节点,将包含await关键字的节点作为目标节点,并对应每一所目标节点创建对应的替换节点组,其中所述替换节点组包括空白try节点和catch节点;将每一所述目标节点填充到所述替换节点组中的所述空白try节点内,并用所述替换节点组替代所述第一抽象语法树中对应的所述目标节点得到第二抽象语法树;将所述第二抽象语法树转换为新的源代码作为第二源代码。2.根据权利要求1所述的基于AST的异常捕获代码注入方法,其特征在于,“遍历所述第一抽象语法树的每一所述节点,将包含await关键字的节点作为目标节点”包括:采用先序遍历方法遍历所述第一抽象语法树,使用await表达式钩子判断所述第一抽象语法树上的每一所述节点是否包含await关键字,将包含await关键字的所述节点作为目标节点。3.根据权利要求1所述的基于AST的异常捕获代码注入方法,其特征在于,“获取第一源代码,并根据所述第一源代码生成第一抽象语法树”包括:获取第一源代码,并在支持ES6的环境下引入babel插件,使用所述babel插件将所述第一源代码转化成第一抽象语法树。4.根据权利要求1所述的基于AST的异常捕获代码注入方法,其特征在于,所述空白try节点对应空白的try代码块,所述catch节点对应catch代码块且挂载于所述空白try节点之后。5.根据权利要求1所...

【专利技术属性】
技术研发人员:毛云青王泽宇谢淼烽杨恒飞
申请(专利权)人:城云科技中国有限公司
类型:发明
国别省市:

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

1