我的程序倾向于使用大量的包装异常(SwingWorker
,例如,将所有异常包装在ExecutionException
中)。所以,我正在尝试编写一个方法,允许我检查异常或其任何原因是否为instanceof
异常类型,但我不知道如何(如果可能的话)通过只是一个类名作为方法的参数。
到目前为止,我有这个:
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
来捕获子类。
有没有办法实现这个目标?
答案 0 :(得分:7)
尝试使用
Class.isAssignableFrom(Class clazz)
http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#isAssignableFrom(java.lang.Class)
答案 1 :(得分:4)
查看Class.isAssignableFrom()
。
答案 2 :(得分:1)
请参阅方便的方法Class.isInstance()
if( ... c.isInstance(e) ...