版本6不支持instanceof中的模式匹配

问题描述 投票:0回答:2

我有一个 try-catch 块。

try {
    // ...
}
catch (SQLException e) {
    if (e instanceof SQLIntegrityConstraintViolationException e2) {
        // ...
    }
}

但是它给出了编译错误:

版本6不支持instanceof中的模式匹配

这是怎么造成的,如何解决?

java compiler-errors try-catch
2个回答
1
投票

您在代码的instanceof行中使用模式匹配:

e instanceof SQLIntegrityConstraintViolationException e

您可能还将源代码标记为(java)版本6,并且该版本不支持instanceof模式匹配。最后删除变量 e 应该可以消除错误(如果您确实使用 java 6 源代码) 升级到较新的 java 版本,例如; 17 还将消除编译时错误


0
投票
} 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()
© www.soinside.com 2019 - 2024. All rights reserved.