【发布时间】:2021-03-02 08:06:51
【问题描述】:
我了解在相应的 try 块中捕获从未抛出的已检查异常是无效的。因为如果异常发生,编译器本身会强制程序员处理异常。
比如这段代码sn -p -
try
{
}
catch(IOException e)
{
}
无效。
但是为什么编译器不以相同的方式处理抛出从未在方法体中抛出的检查异常的方法?
比如这段代码sn -p -
void test() throws IOException
{
}
令人惊讶地有效。
请解释其背后的原因。 TIA。
【问题讨论】:
-
这能回答你的问题吗? stackoverflow.com/questions/35184092/…
-
不完全是。它更强调捕获检查的异常。我的问题是关于声明从未抛出的已检查异常。
-
必须允许方法声明它们抛出异常,即使它们实际上并没有抛出它,因为覆盖方法(可能)声明它们抛出基类方法抛出的检查异常。并且这些方法的覆盖可能需要抛出异常。
标签: java exception ioexception checked throws