ClassNotFoundException直接继承与Exception,它是一个checked 的异常。
NoClassDefFoundErr 继承自Error->LinkageError ,它是一个unchecked 的异常。
NoClassDefFoundErr 继承自Error->LinkageError ,它是一个unchecked 的异常。
当我们在运行期间通过Class.forName() or ClassLoader.loadClass() or ClassLoader.findSystemClass() 等方法动态加载类的时候,在jvm中找不到对应的类,就会抛出 ClassNotFoundException,这个异常可以通过try catch方法捕获。
NoClassDefFoundError 是通过new的形式去生成类实例的,在编译期间是存在的,但是在运行的时候找不到该类就会抛出NoClassDefFoundError。
本文解析了ClassNotFoundException与NoClassDefFoundError的区别。前者是通过Class.forName()等方法动态加载类时,若JVM找不到对应类而抛出的checked异常;后者是在尝试通过new实例化类时,编译期存在但运行期找不到类而引发的unchecked异常。
1297

被折叠的 条评论
为什么被折叠?



