我是java的新手,并尝试在特定的异常处理方案中实现isInstance()。
try {
....
..//some condition
throws MyException(); // --> MyException extends RuntimeException
}catch(Exception e){
if(e.getClass().isInstance(MyException.class)) // --> This returns false
.. //do something
}
上面的isInstance()返回false。
当我调试时,e.getClass()有一个值:
in.soumav.exceptions.MyException(id = 133)
并且MyException.class具有值:
in.soumav.exceptions.MyException(id = 133)
我想念哪个概念?
最佳答案
你倒退了。
它应该是:
if (MyException.class.isInstance(e))
Javadoc:
boolean java.lang.Class.isInstance(Object obj)
确定指定的Object是否与此类表示的对象赋值兼容。
因此,如果要检查
e
引用的异常实例是否与类MyException
兼容,则应将e
作为参数传递给MyException.class.isInstance()
。或者,您可以使用
isAssignableFrom
:if (e.getClass().isAssignableFrom(MyException.class))