2014-01-09 20 views
3

Мои программы имеют тенденцию использовать множество обернутых исключений (SwingWorker, например, обертывает все исключения в ExecutionException). Итак, я пытаюсь написать метод, который позволит мне проверить, является ли исключение или любая его причина instanceof типом исключения, но я не знаю, как (если это возможно) передать JUST имя класса как аргумент метода.Передать имя класса методу

До сих пор у меня есть это:

public static boolean errorOrCausesInstanceOfClass(Throwable e, Class c) { 
    return e != null && (e.getClass().equals(c) || (e.getCause() != null && errorOrCausesInstanceOfClass(e.getCause(), c))); 
} 

Но это будет работать только в том случае e.getClass() точно равна c.getClass(). Но я бы хотел проверить, используя instanceof, чтобы поймать подклассы.

Есть ли способ сделать это?

+1

класса является сырьевым типа и должны быть настроены параметры на ваш метод, как (Throwable е, класс с) –

ответ

1

Смотрите удобный метод Class.isInstance()

if(... c.isInstance(e) ... 
+0

Я предпочитаю это решение 'Class.isAssignableFrom()' –

+0

@MikeB, есть ли какая-то особая причина? Даже после прочтения этого вопроса (http://stackoverflow.com/questions/3949260/java-class-isinstance-vs-class-isassignablefrom) у меня все еще возникают проблемы с пониманием того, почему предпочтительнее другого – ryvantage

+0

@ryvantage, это в основном личное предпочтение. Единственное реальное преимущество, о котором я знаю, - вам не нужно беспокоиться об исключении NullPointerException. –

Смежные вопросы