`
atell
  • 浏览: 161633 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

java.lang.NoClassDefFoundError可以捕获

阅读更多

原本以为类不存在的Error不能捕获,想不到是可以的,记录一下。注意,这和反射遇到的“java.lang.ClassNotFoundException”是不一样的。

 

以下代码,编译完后,我删除了Demo$T2.class,如果不添加try-catch,会出现:

Exception in thread "main" java.lang.NoClassDefFoundError: com/atell/Demo$T1
	at com.atell.Demo.main(Demo.java:10)
Caused by: java.lang.ClassNotFoundException: com.atell.Demo$T1
	at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
	... 1 more

 

添加了tay-catch之后,就打印“捕获了Error”

 

package com.atell;

import java.io.IOException;

public class Demo {

    public static void main(String[] args) throws IOException, InterruptedException, ClassNotFoundException {
        try {
            T2.x = 9;
        } catch (Error e) {
            System.out.println("捕获了Error");
        }
    }

    static class T2 {

        static int x;
    }

}
分享到:
评论

相关推荐

    java.lang.NoClassDefFoundError:

    通过上述步骤的排查,可以有效地定位并解决`java.lang.NoClassDefFoundError`的问题。对于初学者来说,这类问题可能显得较为复杂,但随着对Java生态系统的深入理解,处理起来会越来越得心应手。

    java.io.CharConversionException: isHexDigit 出现错误的原因及其解决办法

    3. **日志分析**:增加日志记录,捕获异常时的上下文信息,包括输入的字符或字符串,这样可以帮助定位问题的具体位置。 4. **单元测试**:编写单元测试来覆盖可能导致异常的场景,确保代码在各种边界条件下的正确性...

    Java开发常见错误及解决方案文件

    1. 类定义未找到错误(java.lang.NoClassDefFoundError) - 原因分析:此类错误通常发生在运行时,JVM找不到所需类的定义。可能的原因包括类文件未被正确上传到服务器、上传了类文件但服务器没有正确检测到,以及...

    java常见错误.pdf

    4. java.lang.NoClassDefFoundError 当Java虚拟机或类加载器尝试加载类定义时,如果无法找到类定义,则会抛出NoClassDefFoundError。这可能是因为缺少了必要的类文件,或者类路径配置不正确。 5. java.lang.Error ...

    Java连接MySQL数据库.docx

    例如,`java.lang.NoClassDefFoundError`通常意味着Java虚拟机找不到运行时需要的类,这可能是因为`classpath`没有正确设置。当环境变量更改后,需要重启DOS命令行窗口以使更改生效。 5. **使用Eclipse链接MySQL**...

    JAVA基础测试中常见的异常问题汇总

    `java.lang.NoClassDefFoundError`异常通常表示Java虚拟机(JVM)无法找到并加载类。这可能是由于以下原因: - **类名错误**:确保类名(包括包名)正确无误。 - **类路径问题**:检查`CLASSPATH`环境变量是否包含了...

    java中的异常

    接着,我们深入分析`java.lang.NoClassDefFoundError`。即使类名正确,如果在编译时使用了包结构,但在运行时未正确指定,也会导致此异常。例如,如果类在名为`com.example.Hello`的包中,运行`java Hello`会导致...

    JAVA常见异常整理.docx

    在Java中,异常是通过类的实例来表示的,这些类都继承自`java.lang.Throwable`类,它是所有异常和错误的根类。异常分为两种主要类型:Error和Exception。 1. **Error**: - `Error`类是所有错误的基类,通常表示...

    java异常总结.pdf

    在Java中,异常被组织成一个层次结构,根类是`java.lang.Throwable`,它有两个主要的子类:`Error`和`Exception`。`Error`通常表示系统级的错误,比如内存不足(`OutOfMemoryError`)或虚拟机错误(`...

    java所有运行时异常以及错误.

    首先,运行时异常是程序在执行过程中可以预见的异常,它们属于`java.lang.Throwable`的子类,并且通常可以通过代码进行预防或捕获。下面列举了一些常见的运行时异常: 1. **算术异常类:ArithmeticException** - 当...

    java异常1[借鉴].pdf

    Java的异常继承自java.lang.Throwable类,包括Error和Exception两个主要子类。Error通常代表系统级错误,如JVM内部错误,程序一般不需要捕获这些错误。而Exception是程序需要处理的异常,可以被程序员通过try-catch...

Global site tag (gtag.js) - Google Analytics