zoukankan      html  css  js  c++  java
  • 使用正则表达式在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 格式化代码)

    trys*?{s+((.|
    )*?)s+}s+catch(.|
    )*?}
    

    说明

    需要注意的有以下几点:

    1. s 表示各种空白字符,包括换行等,因此可以用来匹配try-catch“两端”代码中的空格
    2. 要匹配包括空格的所有字符,应该使用(.| ),因为“.”号不包含换行符
    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

  • 相关阅读:
    使用python3自带工具2to3.py 转换 python2.x 代码 到python3
    python2代码转换python3(2018新)
    解析搜狗词库(python)
    把搜狗输入法词库导入Google拼音输入法
    QT 窗体控件的透明度设置(三种方法)
    Telnet协议详解(远程登陆协议)
    C++游戏开发需要阅读的书籍
    explicit的作用
    C#7.0
    ES6-2
  • 原文地址:https://www.cnblogs.com/battor/p/replace_try_catch_with_regular_expression.html
Copyright © 2011-2022 走看看