VS中批量移除 trycatch

使用正则表达式在VS中批量移除 try-catch

 

使用正则表达式在VS中批量移除 try-catch

前言

try-catch 意为捕获错误,一般在可能出错的地方使用(如调用外部函数或外部设备),以对错误进行正确的处理,并进行后续操作而不至于程序直接中断

但需要注意的是,当 try-catch 嵌套时,外部try-catch将无法对内部 try-catch 捕获的错误进行进一步的处理。因此在框架的使用中,我理解的是:编写人员仅需要对可以考虑到的,可能出错的地方进行处理即可,而没必要每个方法都使用 try-catch 包裹——对于未考虑到的意外情况,统统扔给全局的异常处理即可。这样便于统一的全局日志,也可在上帝的视角给出较为全面的错误堆栈信息(如什么请求引起的错误,输入的参数是什么等等)。

操作

现在项目中几乎所有的方法都被 try-catch 包裹,为了将既有的代码中的 try-catch 统一去除,我使用了如下的正则表达式在 Visual Studio 2019 中进行替换(为了保险起见,应逐个文件替换,替换后大致检查下,并使用 Ctrl + K, Ctrl + F 格式化代码)

try\s*?{\s+((.|\n)*?)\s+}\s+catch(.|\n)*?}

说明

需要注意的有以下几点:

  1. \s 表示各种空白字符,包括换行等,因此可以用来匹配try-catch“两端”代码中的空格
  2. 要匹配包括空格的所有字符,应该使用(.|\n),因为“.”号不包含换行符
  3. *? 表示尽可能少的匹配,+ 则表示尽可能多的匹配
  4. 在 Visual Studio 中使用 $1 $2 .....代表其中的分组(也有部分教程说是使用 \1 \2,可能是老版本的 VS,并没有试验)
  5. 可能有些 try-catch 的写法不同,仅保证对图示中的写法有效
  6. 经过评论区的提醒,并不适用于嵌套try-catch的情况(会将原来的逻辑肢解),并且对于正常的try-catch也一并替换了,使用时应当先预览再操作

参考

正则表达式教程:
https://www.runoob.com/regexp/regexp-metachar.html

Visual Studio 正则替换分组
https://zhuanlan.zhihu.com/p/51490812

原文地址:https://www.cnblogs.com/Leo_wl/p/15691098.html