尝试初始化引发Exception的类时出现ClassNotFoundException



源代码如下:

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发生的原因是由于编译失败或无效而找不到主类。

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

最新更新