gpt4 book ai didi

java - 当 API 引入新的异常类型时编写向前兼容的代码

转载 作者:搜寻专家 更新时间:2023-11-01 03:31:07 25 4
gpt4 key购买 nike

将反射代码从 Java 8 移植到 Java 9+ 时我注意到的一个问题是 setAccessible()现在抛出 InaccessibleObjectException除了SecurityException在 Java 8 之前 InaccessibleObjectException不是异常类型。

接受编写必须捕获和处理异常的代码的方法是什么,因为它是在未来的 Java 版本中,但仍与当前版本兼容? (在这种情况下,唯一的祖先类是 RuntimeException ,但我个人觉得写这样一个无所不包的 catch 感觉像是一种气味。)

最佳答案

您可以向运行时询问 Java 版本(如 this post 中所述)并使用 exception.getClass().getName() 以向后兼容的方式获取异常类名

换句话说

  try {
method.setAccessible();
} catch (RuntimeException e) {
String version = (System.getProperty("java.version"))
String minorVersion = ver.split("\\.")[1];
if (minorVersion >=9) {
if (e.getClass().getName().equals("java.lang.reflect.InaccessibleObjectException")) {
// Handle java 9 reflection access issue
} else {
// Handle java 8 runtime exception
}
}





关于java - 当 API 引入新的异常类型时编写向前兼容的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54450854/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com