【问题标题】:java - ClassNotFoundException when trying to init a class which throws Exceptionjava - 尝试初始化抛出异常的类时出现 ClassNotFoundException
【发布时间】:2021-09-13 20:47:34
【问题描述】:

源码如下:

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() 语句时它可以工作。

【问题讨论】:

    标签: java class exception classnotfoundexception initializer


    【解决方案1】:

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

    任何可能抛出已检查异常(并且不捕获它)的方法都需要使用 throws 关键字声明它。

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

    所以,main 方法也需要有 throws Exception 声明。

    出现ClassNotFoundException是因为主类因为编译失败或无效而找不到。

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

    【讨论】:

      猜你喜欢
      • 2023-03-08
      • 1970-01-01
      • 2011-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-05
      相关资源
      最近更新 更多