Общая утилита для поиска исключений - PullRequest
3 голосов
/ 15 января 2011

Я написал этот маленький вспомогательный метод для поиска в цепочке исключений определенного исключения (равно или класса супер). Тем не менее, это похоже на решение распространенной проблемы, поэтому я подумал, что она должна уже существовать где-то, возможно, в библиотеке, которую я уже импортировала. Итак, есть ли идеи о том, если / где это может существовать?

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 ]

2 голосов
/ 15 января 2011

Загляните в проект Google Guava. У них довольно много удобных классов, включая один для исключений. Например, функциональность, которую вы только что запросили, может быть реализована следующим образом:

    boolean exceptionSearch(Exception base, Class<?> search) {
        return Throwables.getCausalChain(base).contains(search);
    }

Исходный код для этого класса: Throwables

Наслаждайтесь!

0 голосов
/ 15 декабря 2012

Я обнаружил, что Apache commons-lang ExceptionUtils.indexOfType делает это:

public static int indexOfType (java.lang. Throwable throwable, java.lang.Class type)

0 голосов
/ 15 января 2011

Я не думаю, что есть какая-либо утилита, которая поможет решить эту проблему.Мне действительно любопытно, почему вы захотите это сделать.Там может быть лучшее решение для вашей корневой цели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...