我有一个方法(不幸的是)接受一个Object
实例作为它的唯一参数。Object
如果是任何类型Throwable
(这意味着所有 Exceptions
- 选中或未选中,以及所有 Error
s) ,我需要添加以不同方式处理它的逻辑。
public void handle(Object toHandle) {
if(toHandle.getClass().isAssignableFrom(Throwable.class))
handleThrowable(toHandle);
}
当我像这样调用这个方法时:
RuntimeException rte = new RuntimeExceptio("Panic!");
handle(rte);
isAssignableFrom
检查返回 false 并且永远handleThrowable
不会被调用。为什么?
相反,我必须使用:
public void handle(Object toHandle) {
if(toHanlde instanceof Throwable)
handleThrowable(toHandle);
}
正如我所期望的那样,这很有效。但仍然为为什么isAssignableFrom
不工作而感到困惑......在此先感谢!