问题
sql报错,打印出的错误日志很多,而且都是英文。现在需要只提取部门有用关键字,保留关键信息。 例如在PG数据库执行某个sql,如果表或者字段不存在可能的报错信息如下:
异常信息,org.postgresql.util.PSQLException: ERROR: column a.input_time does not exist Position: 131 at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2433) at
希望提取关键信息:column a.input_time does not exist
解决
sql执行错误,只提取数据表和字段不存在的关键信息
public static void main(String[] args) {
//需要匹配的字符串
String str = "异常信息,org.postgresql.util.PSQLException: ERROR: column a.input_time does not exist Position: 131 at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2433) at ";
//正则表达式
String patternStr = "\\b(relation|column).*\\b(exist)";
//一个Pattern对象和一个正则表达式相关联
Pattern pattern = Pattern.compile(patternStr);
//一个Matcher对象和一个具体的字符串相关联,表示在指定模式下与这个字符串匹配
Matcher matcher = pattern.matcher(str);
//截取匹配的字符串
while(matcher.find()){
String str1 = matcher.group();
System.out.println("11:"+str1);
}
}
Java处理PostgreSQLSQL异常:表列不存在
这段代码展示了如何使用Java处理SQL执行时的错误,特别是当尝试访问不存在的表列时,通过正则表达式匹配异常信息中的关键字段名。
779

被折叠的 条评论
为什么被折叠?



