这是代码:
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!");
}
}
}
Excp
和 Excp2
都扩展了 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/