RuntimeException通过创建自定义异常进行处理

时间:2014-12-30 20:47:05

标签: java exception-handling custom-error-handling

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运算符?

2 个答案:

答案 0 :(得分:2)

  

为什么ABCRuntimeException不是ABCException的实例。

因为你没有那样定义

public class ABCRuntimeException extends RuntimeException 

public class ABCException extends Exception 
  

以及如何处理这种异常情况以便我可以应用常见的   ABCRuntimeException和ABCException的逻辑,不放OR   运营商是否有条件?

在这种情况下,您的例外仅将Exception作为超类型共享,||是合适的。 (如果您不关心抛出的其他类型的异常,也可以捕获Exception。)

答案 1 :(得分:0)

在java中可以扩展多个类的异常。如果你从ABCException和其他父异常扩展它,这应该有效。