我有一个 try-catch 块。
try {
// ...
}
catch (SQLException e) {
if (e instanceof SQLIntegrityConstraintViolationException e2) {
// ...
}
}
但是它给出了编译错误:
版本6不支持instanceof中的模式匹配
这是怎么造成的,如何解决?
您在代码的instanceof行中使用模式匹配:
e instanceof SQLIntegrityConstraintViolationException e
您可能还将源代码标记为(java)版本6,并且该版本不支持instanceof模式匹配。最后删除变量 e 应该可以消除错误(如果您确实使用 java 6 源代码) 升级到较新的 java 版本,例如; 17 还将消除编译时错误
} catch (SQLException e) {
if (e instanceof SQLIntegrityConstraintViolationException) {
message = “Warning: “ + e.getMessage();
}
}
或者更诚实地把异常隐藏起来:
} catch (SQLIntegrityConstraintViolationException e) {
message = “Warning: “ + e.getMessage();
} catch (SQLException e2) {
}
您不需要 SQLIntegrityConstraintViolationException 变量。 你可能把它投射为
((SQLIntegrityConstraintViolationException)e).getMessage()