为什么仅在特定情况下才需要方法签名中的 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");
}
}
你的第一个方法不能抛出一个IOException
。 finally
块中的 return
语句有效地吞噬了 会 抛出的任何异常(即您在 try
块)。
您的第二个方法绝对 将 抛出一个 IOException
,因为这是一个已检查的异常,您需要一个 throws
子句来告诉调用者。
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");
}
}
你的第一个方法不能抛出一个IOException
。 finally
块中的 return
语句有效地吞噬了 会 抛出的任何异常(即您在 try
块)。
您的第二个方法绝对 将 抛出一个 IOException
,因为这是一个已检查的异常,您需要一个 throws
子句来告诉调用者。