使用正则表达式在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)*?}

说明

需要注意的有以下几点:
- \s 表示各种空白字符,包括换行等,因此可以用来匹配try-catch“两端”代码中的空格
- 要匹配包括空格的所有字符,应该使用(.|\n),因为“.”号不包含换行符
- ? 表示尽可能少的匹配,+* 则表示尽可能多的匹配
- 在 Visual Studio 中使用 $1 $2 .....代表其中的分组(也有部分教程说是使用 \1 \2,可能是老版本的 VS,并没有试验)
- 可能有些 try-catch 的写法不同,仅保证对图示中的写法有效
参考
正则表达式教程:
https://www.runoob.com/regexp/regexp-metachar.html
Visual Studio 正则替换分组
https://zhuanlan.zhihu.com/p/51490812
使用正则表达式在VS中批量移除 try-catch的更多相关文章
- 在Visual Studio中使用正则表达式匹配换行和批量替换
系统环境:Windows 8.1 Enterprise Update 2 x64 开发环境:Mircosoft Visual Studio Ultimate 2013 Update 2 RC 问题:如 ...
- ehcache模糊批量移除缓存
目录 前言 实现 总结 前言 众所周知,encache是现在最流行的java开源缓存框架,配置简单,结构清晰,功能强大.通过注解@Cacheable可以快速添加方法结果到缓存.通过@CacheEvic ...
- 正则表达式与Python中re模块的使用
正则表达式与Python中re模块的使用 最近做了点爬虫,正则表达式使用的非常多,用Python做的话会用到re模块. 本文总结一下正则表达式与re模块的基础与使用. 另外,给大家介绍一个在线测试正则 ...
- 正则表达式在iOS中的运用
1.什么是正则表达式 正则表达式,又称正规表示法,是对字符串操作的一种逻辑公式.正则表达式可以检测给定的字符串是否符合我们定义的逻辑,也可以从字符串中获取我们想要的特定部分.它可以迅速地用极简单的方式 ...
- 向Android模拟器中批量导入通讯录联系人
使用adb命令向Android模拟器中批量导入通讯录联系人的方法: 使用adb提供的命令, 可以非常方便地从PC中将通讯录批量导入android模拟器中. 首先要先准备好固定格式的vcf文件, 该文件 ...
- 正则表达式(/[^0-9]/g,'')中的"/g"是什么意思?
解答“正则表达式(/[^0-9]/g,'')中的"/g"是什么意思?”这个问题,也为了能够便于大家对正则表达式有一个更为综合和深刻的认识,我将一些关键点和容易犯糊涂的地方再系统总结 ...
- SQL中批量删除被注入的恶意代码的方法
下文将为您介绍SQL中批量删除被注入的恶意代码的方法,供您参考,如果您也遇到了这样的问题,不妨一看,相信对您会有所帮助. 1,如果你的数据表很少的话,那么写几条简单的sql就搞定了 对于表中的nvch ...
- 161102、MyBatis中批量插入
方法一: <insert id="insertbatch" parameterType="java.util.List"> <selectKe ...
- 正则表达式(/[^0-9]/g,'')中的"/g"是什么意思 ?
正则表达式(/[^0-9]/g,'')中的"/g"是什么意思 ? 表达式加上参数g之后,表明可以进行全局匹配,注意这里“可以”的含义.我们详细叙述: 1)对于表达式对象的e ...
随机推荐
- JavaScript-DOM-节点简介与分类
简介 节点(node)是一个网络术语,它表示网络中的一个连接点.一个网络就是由一些节点构成的集合. 在DOM里,文档是由节点构成的集合,此时的节点是文档树上的树枝和树叶. 分类 DOM中包含许多不同类 ...
- java集成网站微信,微博,qq登录
微信 WechatConfig.java package com.meeno.chemical.common.sdk.wechat.config; import org.springframework ...
- WPF---数据绑定之RelativeSource(五)
一.概述 当Binding有明确的数据来源的时候,我们可以用Source或者ElementName赋值的办法让Binding与之关联. 但是,有时候当我们不能确定作为Source的对象叫什么名字的时候 ...
- C#多线程---Event类实现线程同步
一.简介 我们使用类(.net Framework中的类,如 AutoResetEvent, Semaphore类等)的方法来实现线程同步的时候,其实内部是调用操作系统的内核对象来实现的线程同步. S ...
- 阿里云sql监控配置-druid
今天我们说说数据源和数据库连接池,熟悉java开发的同仁应该都了解C3PO,在这里不做过多的赘述了,今天我们说的是阿里DRUID,druid是后起之秀,因为它的优秀很快占领了使用市场,下边我们一起来看 ...
- 通过location响应头实现重定向
package day08; import java.io.IOException; import javax.servlet.ServletException; import javax.servl ...
- mysql 8.0 1405的坑
因版本差异:password 可能对应:authentication_string字段 不行的话再尝试一下,并且修改下密码类型 ALTER USER 'root'@'%' IDENTIFIED WI ...
- Django的基本运用(垃圾分类)
title: 利用Django实现一个能与用户交互的初级框架 author: Sun-Wind date: September 1, 2021 Django实现基本的框架 此框架的功能是搭建服务器,使 ...
- 痞子衡嵌入式:MCUXpresso Config Tools初体验(Pins, Clocks, Peripherals)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso Config Tools三大件(Pins, Clocks, Peripherals). 不知道大家有没有这样的感受 ...
- JDK和环境配置,eclipse安装与使用
本博客部分参照https://blog.csdn.net/PGY0000/article/details/79256720 (记住要尊重别人的劳动产品) 原博客给的链接和后面的安装过程有点不一样,不能 ...