源代码如下:
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
方法调用foo
和foo
可能引发异常。main方法没有捕捉到这一点,因此它会将异常抛出给调用方。
因此,main
方法也需要有throws Exception
声明。
ClassNotFoundException
发生的原因是由于编译失败或无效而找不到主类。
如果您查看编译器输出,应该会看到一个错误,告诉您throws
声明丢失(未捕获的异常(。