为什么仅在特定情况下才需要方法签名中的 IOException 抛出?

Why throws for IOException in method signature is needed for only specific cases?

public static String doSomething()  {
    String name = "ABC";
    try {
        throw new IOException();
    } finally {
       return name;
    }
} 

O/p:ABC

但是下面的代码需要在方法签名中抛出。是因为缺少 return 语句还是其他原因?

 public static String doSomething() throws IOException {
    String name = "ABC";
    try {
        throw new IOException();
    } finally {
       System.out.println("hello");
    }
}

你的第一个方法不能抛出一个IOExceptionfinally 块中的 return 语句有效地吞噬了 抛出的任何异常(即您在 try块)。

您的第二个方法绝对 抛出一个 IOException,因为这是一个已检查的异常,您需要一个 throws 子句来告诉调用者。