使用正则表达式在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 ...
随机推荐
- EasyExcel导入导出
maven依赖 <!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel --> <dependency> & ...
- NOIP 模拟 $19\; \rm w$
题解 \(by\;zj\varphi\) 树形 \(dp\) 题目 有一个结论:对于一个图,有多少奇度数的点,处以二就是答案,奇度数指的是和它相连的边中被反转的是奇数 证明很好证 那么设 \(dp_{ ...
- 题解 Connect
传送门 各种骗分无果,特殊性质还手残写挂了-- 首先完全图上直接输出边权 \(\times (n-2)\) 就行了,然而我脑残乘的 \(n-1\) 看数据范围肯定是状压,但是压边肯定炸了,考虑压点 因 ...
- arthas-Java诊断工具
Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱. 官网:https://arthas.aliyun.com/zh-cn/ 当你遇到以下类似问题而束手无策时,Arthas可以帮助你 ...
- 【java文件处理】java项目路径下的文件下载处理
1. controller类: package com.neo.controller; import javax.servlet.http.HttpServletResponse; import or ...
- uwp 之多媒体开发
xml code ----------------------------------------------------- <Page x:Class="MyApp.MainPage ...
- java8 lambda表达式和函数式编程
什么是函数式接口(Functional Interface) 其实之前在讲Lambda表达式的时候提到过,所谓的函数式接口,当然首先是一个接口,然后就是在这个接口里面只能有一个抽象方法 (可以有def ...
- Java 大数加法HdAcm1002
1 import java.util.Scanner; 2 3 4 public class Main { 5 public static void main(String[] args) { 6 S ...
- mysql:刚刚知道的冷知识(一)
唯一索引的值可以null 1.创建一张user表,name字段指定为唯一索引 create table user( id int primary key auto_increment, name va ...
- 测试Kaggle kernel commit 是否会删除以前的output
在kaggle上创建kernel,加入如下代码. 连续运行两次,可以看到保存的文件名字不一样,且无论运行错少次,都只有一个输出文件. 这说明,kaggle上的kernel每次commit运行,都会清空 ...