gpt4 book ai didi

java - 使用 throws 子句声明从未在方法主体中抛出的已检查异常

转载 作者:行者123 更新时间:2023-12-03 08:26:45 25 4
gpt4 key购买 nike

我知道捕获一个从未在相应的 try block 中抛出的已检查异常是无效的。因为如果发生异常,编译器本身会强制程序员处理异常。

例如,这个代码片段 -

try
{
}
catch(IOException e)
{
}

无效

但是对于抛出从未在方法体中抛出的已检查异常的方法,编译器为什么不以相同的方式工作呢?

例如,这个代码片段 -

void test() throws IOException
{
}

令人惊讶地有效

请解释一下背后的原因。 TIA。

最佳答案

因为您可能希望允许子类抛出此异常。

public abstract class Parent {
public void doStuff() {}
}
public class Child {
// this is illegal, because you throw more exceptions than the overridden method
public void doStuff() throws IOException {}
}

这对于接口(interface)来说更加直观,其(非默认)方法永远不会抛出异常,但可以声明它。

关于java - 使用 throws 子句声明从未在方法主体中抛出的已检查异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66435526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com