Java RuntimeException的rethrowing子类

Java RuntimeException的rethrowing子类,java,exception-handling,Java,Exception Handling,我正在创建一个通用类,该类接受它愿意处理的异常列表作为参数 public class MyClass { public MyClass (List<Class<? extends RuntimeException>> exceptions) ... public execute() { try { justObj.call() } catch(RuntimeException e) { if exceptions.conta

我正在创建一个通用类,该类接受它愿意处理的异常列表作为参数

public class MyClass {
  public MyClass (List<Class<? extends RuntimeException>> exceptions) ...
  public execute() {
    try {
      justObj.call()
    } catch(RuntimeException e) {
      if exceptions.contains(e.getClass()) {...}
      else {throw e;}
    }
公共类MyClass{

public MyClass(List当您捕获RuntimeException(或任何子类)时,它不会更改对象/异常的类型。如果它是NullPointerException,当您再次抛出它时,它仍然是这种类型的对象(正如您在代码中所做的)

当您捕获RuntimeException(或任何子类)时,它不会更改对象/异常的类型。如果它是NullPointerException,当您再次抛出它时,它仍然是这种类型的对象(正如您在代码中所做的)

它将是-RuntimeException只是对原始对象的引用,它将是RuntimeException最初抛出的任何子类(例如NullPointerException)。

它将是-RuntimeException只是对原始对象的引用,它将是最初抛出的RuntimeException的任何子类(例如NullPointerException)。

它已经工作了:

public static void main(String[] args) {
    try {
            ((ArrayList) null).get(0);
    } catch (RuntimeException e) {
        throw e;
    }
}
抛出:

Exception in thread "main" java.lang.NullPointerException
    at Test.main(Test.java:96)
它已经起作用了:

public static void main(String[] args) {
    try {
            ((ArrayList) null).get(0);
    } catch (RuntimeException e) {
        throw e;
    }
}
抛出:

Exception in thread "main" java.lang.NullPointerException
    at Test.main(Test.java:96)

你试过了吗?如果没有,为什么没有?谢谢。我的代码中有一个bug改变了类型。你试过了吗?如果没有,为什么没有?谢谢。我的代码中有一个bug改变了类型。