在软件开发中可能会有一些异常,因为开发习惯问题导致异常未被正确处理,只是打印了日志:
try{
...
}
catch (Exception e) {
e.printStackTrace();
}
这样的代码在运行时出现异常很难被定位。
现在可以用以下正则表达式来查询类似的异常处理:
(catch\s*\([a-z|0-9 ]+\s+([a-z][0-9a-z_]*)\s*\)\s*(?:\s*//[^\n]*?\n)*\s*\{[\s]*?(?:\s*//[^\n]*?\n)*\s*(?:(?:(?:\s*//[^\n]*?\n)*\s*MyLog\.|LogUtil|android.util.Log|Log\.|[a-z]+.printStackTrace)[^;\n]*?;\s*?(?:\s*//[^\n]*?\n)*)*\s*)(?<=\n)(\s*)\}
catch(Exception e )//空内容
{
}
catch(Exception e)//仅注释,只支持单行注释
{
//sdfaf
//
}
catch (Exception e) {//自定义写日志
Log.e("xxx");
}
catch (Exception e) {//默认日志
e.printStackTrace();//默认日志
}
catch (Exception e) {//多个写日志组合
e.printStackTrace();
MyLog.e("连接云服务端异常");
}
catch (Exception e) {//日志+注释
//12
Log.e("TAG","连接云服务端异常");
//
}
catch (Exception eee) //日志+注释
{
//sd
eee.printStackTrace();
//sdfsdfs
}
catch (Exception e){//大量单行注释
//sdfsdf
//sdfsdf
e.printStackTrace();
//sdfsdfsd
//sdfsdfsd
MyLog.e("连接云服务端异常");
//sdfsdf
//sdfsdf
}
catch (NullPointerException | IllegalArgumentException e){//多异常同时处理
//sdfsdf
e.printStackTrace();
//sdfsdfsd
MyLog.e("连接云服务端异常");
//sdfsdf
}
正则表达式中一共三个捕获组,第一个是catch到}号之前的(不包括}),第二个是异常变量名,第三个是"}"号到行首的空格
所以根据配置组可以把这些异常处理更新为需要的异常处理,例如查找替换为:
<span style="font-size:32px;">$1 $3 throw new MyException($2);\n$3}</span>
替换结果如下
catch(Exception e )//空内容
{
throw new MyException(e);
}
catch(Exception e)//仅注释,只支持单行注释
{
//sdfaf
//
throw new MyException(e);
}
catch (Exception e) {//自定义写日志
Log.e("xxx");
throw new MyException(e);
}
catch (Exception e) {//默认日志
e.printStackTrace();//默认日志
throw new MyException(e);
}
catch (Exception e) {//多个写日志组合
e.printStackTrace();
MyLog.e("连接云服务端异常");
throw new MyException(e);
}
catch (Exception e) {//日志+注释
//12
Log.e("TAG","连接云服务端异常");
//
throw new MyException(e);
}
catch (Exception eee) //日志+注释
{
//sd
eee.printStackTrace();
//sdfsdfs
throw new MyException(eee);
}
catch (Exception e){//大量单行注释
//sdfsdf
//sdfsdf
e.printStackTrace();
//sdfsdfsd
//sdfsdfsd
MyLog.e("连接云服务端异常");
//sdfsdf
//sdfsdf
throw new MyException(e);
}
catch (NullPointerException | IllegalArgumentException e){//多异常同时处理
//sdfsdf
e.printStackTrace();
//sdfsdfsd
MyLog.e("连接云服务端异常");
//sdfsdf
throw new MyException(e);
}
这个只是一个DEMO,也不是所有的异常都要替换,需要看实际情况需要替换的自行替换。
转载请注明出处,谢谢