public void foo1() throws OException
{
try {
} catch(Exception e) {
throw e;
}
}
OException扩展了Exception
OException是第三方提供的API类
我在throw e语句中在catch块中遇到编译错误
未处理的异常类型异常
这是因为我不能像在我写的方法签名中一样抛出OException吗?
我可以通过以下两种方法解决此编译错误:
如果我在方法签名而不是OException中抛出Exception
如果我在catch块中抛出OException而不是父类型Exception e
我的一位朋友在他的工作区中打开了相同的代码,但没有给他任何复杂的错误,所以我对这里到底发生了什么感到困惑。
有人可以撒点光吗?
最佳答案
Exception
是检查的异常类型。这意味着您必须捕获它(使用try { ... } catch(Exception ex) { ... }
或在使用throws
的方法中对其进行声明。
由于Exception
类在异常层次结构中的OException
之上,因此必须将throws OException
更改为throws Exception
。
如果捕获并重新抛出的异常类型为OException
,则throws
异常声明就可以了。