NoClassDefFoundError 和ClassNotFoundException的区别

 

NoClassDefFoundError 和ClassNotFoundException是我们在编程中常见的两个错误之2。

乍一看起来,这两个错误很像。为了区别开他们,特意思考一下把想法记录下来。

1.首先,NoClassDefFoundError是一个错误,ClassNotFoundException是一个异常。

  注:Error一般可以理解为指系统异常或者jvm异常;Exception是指逻辑上可以避免的异常或者是指逻辑上不能避免但是jvm可以检测到的异常。Exception有RuntimeException(运行时异常)和Checked Exception(相对于Unchecked Exception而言)。

 

2.NoClassDefFoundError既然是一个错误,是指jvm加载类时候,某一个类没有找到导致的错误。一般是ClassLoader尝试加载类(例如引用或者new对象时),找不到这个类的定义,此时会暴露这个错误。当部署项目时候,jar包或者定义的类丢失会导致这样的问题出现。

 

3.ClassNotFoundException是一个异常。应该是编译不会发现问题,但是在项目运行时候或者调用方法应用时候,发生了异常。

比如 Class c = Class.forName("com.demo.Test").此时编译可过,但是真正运行该代码时候,如果com.demo.Test没有找到就会跑出ClassNotFoundException。上述将类名作为参数时候会出现这样的异常,所以要避免类名写错。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值