这是代码:

public class Exc {
int x = 2;
public void throwE(int p) throws Excp, Excp2 {
    if(x==p) {
        throw new Excp();
    }
    else if(x==(p+2)) {
        throw new Excp2();
    }
  }
}

这是处理程序代码:
public class tdExc {
public static void main(String[] args) {
    Exc testObj = new Exc();
    try {
        testObj.throwE(0);
        System.out.println("This will never be printed, so sad...");
    } catch(Exception Excp) {
        System.out.println("Caught ya!");
    } catch(Exception Excp2) {
        System.out.println("Caught ya! Again!!!!");
    } finally {
        System.out.println("This will always be printed!");
    }
  }
}
ExcpExcp2 都扩展了 Exception 并且具有相似的代码(没有)。现在我在 Exception has already been caught 处收到错误 Excp2 错误,无论我为 throwE 方法提供 2 还是 0。

最佳答案

您正在寻找:

try
{ }
catch(Excp excp)
{
   log(excp);
}
catch(Excp2 excp2)
{
   log(excp2);
}
finally
{ }

捕获异常时,指定异常 的 类型,以及其引用的 名称
您的原始代码试图捕获 Exception ,这是最不具体的异常,因此在此之后您无法捕获任何内容。

关于java - 异常已捕获错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3222871/

10-12 04:10