java - 尝试初始化 class 时引发异常的 ClassNotFoundException

java - ClassNotFoundException when trying to init a class which throws Exception

源码如下:

public class Main {
    public static void main(String[] args) {
        MyClass mycClass = new MyClass();
    }
}

class MyClass {
    public void foo() throws Exception {
        throw new Exception();
    }
}

有人能帮我理解为什么 MyClass 初始化程序抛出 ClassNotFoundException 但是当我从 foo 函数中删除 throw new Exception() 语句时它起作用了。

您声明 foo 可能会抛出任何类型的 Exception

任何可能抛出已检查异常(但未捕获异常)的方法都需要使用 throws 关键字进行声明。

您的 main 方法调用 foofoo 可能会引发异常。 main 方法没有捕捉到它,所以它会将异常抛给它的调用者。

因此,main 方法也需要有 throws Exception 声明。

出现ClassNotFoundException是因为未找到主要的class,因为它编译失败或无效。

如果您查看编译器输出,您应该会看到一个错误,告诉您缺少 throws 声明(未捕获的异常)。