如果我在方法中 "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.