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异常声明就可以了。

08-25 22:12