public void foo1() throws OException
{
try {
} catch(Exception e) {
throw e;
}
}
OException 扩展了 Exception
OException是第三方提供的API类
我在 throw e 语句的 catch block 中遇到编译错误,内容为
unhandled exception type exception
这是因为我无法像我编写的方法签名中那样抛出 Parent 类型异常 throws OException 吗?
我可以通过以下两种方式解决此编译错误:-
- 如果我在方法签名中抛出 Exception 而不是 OException
- 如果我在 catch block 中抛出 OException 而不是父类型 Exception e
我的一个 friend 在他的工作区中打开了相同的代码,并且没有给他带来任何复杂的错误,所以我对这里到底发生了什么感到困惑。
有人可以解释一下吗?
最佳答案
Exception
是受检查的异常类型。这意味着您必须捕获它(使用 try { ... } catch(Exception ex) { ... }
或使用 throws
在方法中声明它。
由于 Exception
类位于异常层次结构中的 OException
之上,因此您必须将 throws OException
更改为 throws Exception
>.
如果捕获并重新抛出的异常类型是 OException
,则 throws
异常声明就可以了。
关于java - 如果我们在方法签名中写了 throws child 类型异常,我们可以在方法中抛出 Parent 类型异常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57269135/