如果我在方法中 "throw new Error()" 追加和不追加 "throws Error" 到方法声明有什么区别?
If I "throw new Error()" in a method what is the difference between appending and not appending "throws Error" to the method declaration?
我有以下程序-
private static void fun() throws Error {
System.out.println("I am having fun");
throw new Error();
}
private static void enjoy() {
System.out.println("I am enjoying");
throw new Error();
}
public static void main(String[] args) {
try {
fun();
} catch(Error e) {
System.out.println(e);
}
System.out.println("\n");
try {
enjoy();
} catch(Error e) {
System.out.println(e);
}
}
在这里,我声明了两个方法 - fun()
和 enjoy()
两者都有
throw new Error()
声明
然而,
fun()
已将 throws Error
附加到方法声明
而
enjoy()
没有。
但两者都给出了相似的输出 -
I am having fun
java.lang.Error
I am enjoying
java.lang.Error
那么,在这里将throws Error
附加到方法声明的意义是什么?
Java中有两种种异常。 选中 和未选中。您不需要为未经检查的异常添加 throws
。您也不需要 catch
它们。这不是巧合。这就是已检查异常和未检查异常之间的区别。 Error
(明确地说)是一个未经检查的异常,Java文档说(部分)
That is, Error and its subclasses are regarded as unchecked exceptions for the purposes of compile-time checking of exceptions.
我有以下程序-
private static void fun() throws Error {
System.out.println("I am having fun");
throw new Error();
}
private static void enjoy() {
System.out.println("I am enjoying");
throw new Error();
}
public static void main(String[] args) {
try {
fun();
} catch(Error e) {
System.out.println(e);
}
System.out.println("\n");
try {
enjoy();
} catch(Error e) {
System.out.println(e);
}
}
在这里,我声明了两个方法 - fun()
和 enjoy()
两者都有
throw new Error()
声明
然而,
fun()
已将 throws Error
附加到方法声明
而
enjoy()
没有。
但两者都给出了相似的输出 -
I am having fun
java.lang.Error
I am enjoying
java.lang.Error
那么,在这里将throws Error
附加到方法声明的意义是什么?
Java中有两种种异常。 选中 和未选中。您不需要为未经检查的异常添加 throws
。您也不需要 catch
它们。这不是巧合。这就是已检查异常和未检查异常之间的区别。 Error
(明确地说)是一个未经检查的异常,Java文档说(部分)
That is, Error and its subclasses are regarded as unchecked exceptions for the purposes of compile-time checking of exceptions.