Custom RuntimeException类不是Custom Exception类的实例。但RuntimeException是Exception的实例。为什么???
我为我的项目创建了两个异常类:
public class ABCRuntimeException extends RuntimeException {
//Functions...
}
public class ABCException extends Exception {
//Functions...
}
现在我正试图像这样处理这些异常:
try{
//Code which throw ABCRuntimeException
} catch(Exception e) {
if(e instanceof ABCException) {
System.out.println("Is instance of ABCException");
} else if(e instanceof Exception) {
System.out.println("Is instance of Exception");
}
}
输出为Is instance of Exception
。为什么ABCRuntimeException不是ABCException的实例。
以及如何处理这种异常情况,以便我可以为ABCRuntimeException和ABCException应用通用逻辑,而不在条件中放入OR运算符?
答案 0 :(得分:2)
为什么
ABCRuntimeException
不是ABCException
的实例。
因为你没有那样定义
public class ABCRuntimeException extends RuntimeException
public class ABCException extends Exception
以及如何处理这种异常情况以便我可以应用常见的 ABCRuntimeException和ABCException的逻辑,不放OR 运营商是否有条件?
在这种情况下,您的例外仅将Exception
作为超类型共享,||
是合适的。 (如果您不关心抛出的其他类型的异常,也可以捕获Exception
。)
答案 1 :(得分:0)
在java中可以扩展多个类的异常。如果你从ABCException和其他父异常扩展它,这应该有效。