异常搜索的常用实用程序

时间:2011-01-15 04:32:11

标签: java exception-handling

我编写了这个小帮助器方法来搜索异常链中的特定异常(等于或超类)。然而,这似乎是一个常见问题的解决方案,因此认为它必须已经存在于某个地方,可能在我已经导入的库中。那么,关于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;
}

3 个答案:

答案 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类型)