有没有办法抑制 "catch branch identical" 警告?无法在此实例中使用多捕获
Is there a way to suppress the "catch branch identical" warning? Unable to use multi catch in this instance
与 API 17 一起开发 android 应用程序,目前需要做一些反思才能完成任务。 ReflectiveOperationException 仅适用于 API 19 及更高版本,但这很好,因为我可以简单地单独捕获每个异常。
问题是当我这样做时,我收到一条警告,说 catch 分支是相同的并且可以使用 multi-catch 编写(或使用我想避免的 Exception)。但是当我将 catch 写为 multi-catch 时,我收到错误消息说我不能使用 ReflectiveOperationException class 因为不是 API 19.
简而言之,我只想抑制警告,但除了执行 @SuppressWarning("all")
之外找不到任何匹配的内容
对于上下文,这里是 warnings/errors:
// Error: "Multi-catch with these reflection exceptions requires API level 19 (current min is 15)
// because they get compiled to the common but new super type ReflectiveOperationException.
// As a workaround either create individual catch statements, or catch Exception."
try {
return someMethodThatThrowsExceptions();
} catch (InstantiationException | IllegalAccessException e) {
throw new RuntimeException(e);
}
// Warning: 'catch' branch identical to 'InstantiationException | IllegalAccessException' branch"
try {
return someMethodThatThrowsExceptions();
} catch (InstantiationException e) {
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
} catch (NoSuchMethodException e) {
throw new RuntimeException(e);
} catch (InvocationTargetException e) {
throw new RuntimeException(e);
}
编辑:添加了我正在处理的所有渔获物,原来只有两个
为了抑制某些警告,我有一个实用函数是这样的:
public static <T> T get( T value )
{
return value;
}
因此,您可以在抛出之前将 e
提供给此 get()
函数,从而使两个 catch
子句不相等。
@SuppressWarnings("TryWithIdenticalCatches")
应该可以解决问题。
与 API 17 一起开发 android 应用程序,目前需要做一些反思才能完成任务。 ReflectiveOperationException 仅适用于 API 19 及更高版本,但这很好,因为我可以简单地单独捕获每个异常。
问题是当我这样做时,我收到一条警告,说 catch 分支是相同的并且可以使用 multi-catch 编写(或使用我想避免的 Exception)。但是当我将 catch 写为 multi-catch 时,我收到错误消息说我不能使用 ReflectiveOperationException class 因为不是 API 19.
简而言之,我只想抑制警告,但除了执行 @SuppressWarning("all")
之外找不到任何匹配的内容对于上下文,这里是 warnings/errors:
// Error: "Multi-catch with these reflection exceptions requires API level 19 (current min is 15)
// because they get compiled to the common but new super type ReflectiveOperationException.
// As a workaround either create individual catch statements, or catch Exception."
try {
return someMethodThatThrowsExceptions();
} catch (InstantiationException | IllegalAccessException e) {
throw new RuntimeException(e);
}
// Warning: 'catch' branch identical to 'InstantiationException | IllegalAccessException' branch"
try {
return someMethodThatThrowsExceptions();
} catch (InstantiationException e) {
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
} catch (NoSuchMethodException e) {
throw new RuntimeException(e);
} catch (InvocationTargetException e) {
throw new RuntimeException(e);
}
编辑:添加了我正在处理的所有渔获物,原来只有两个
为了抑制某些警告,我有一个实用函数是这样的:
public static <T> T get( T value )
{
return value;
}
因此,您可以在抛出之前将 e
提供给此 get()
函数,从而使两个 catch
子句不相等。
@SuppressWarnings("TryWithIdenticalCatches")
应该可以解决问题。