我编写了这个小帮助器方法来搜索异常链中的特定异常(等于或超类)。然而,这似乎是一个常见问题的解决方案,因此认为它必须已经存在于某个地方,可能在我已经导入的库中。那么,关于if / where可能存在的任何想法?
boolean exceptionSearch(Exception base, Class<?> search) {
Throwable e = base;
do {
if (search.isAssignableFrom(e.getClass())) {
return true;
}
} while ((e = e.getCause()) != null);
return false;
}
答案 0 :(得分:2)
了解Google Guava项目。他们有很多方便的课程,包括一个例外。例如,您刚刚请求的功能可以通过下一种方式实现:
boolean exceptionSearch(Exception base, Class<?> search) {
return Throwables.getCausalChain(base).contains(search);
}
此课程的源代码:Throwables
享受!
答案 1 :(得分:0)
我认为没有任何实用工具可以帮助解决这个问题。它确实让我很好奇你为什么要这样做。您的根目标可能有更好的解决方案。
答案 2 :(得分:0)
我发现Apache commons-lang ExceptionUtils.indexOfType执行此操作:
public static int indexOfType(java.lang.Throwable throwable, java.lang.Class类型)