Java异常

  • Java异常架构图


    image.png

    Exception和Error区别

  • 区别
    Exception:是程序正常运行中,可以预料的意外情况,可以能并且应该捕获,进行相应处理
    Error:在正常情况下,不太可能出现的情况,既然是非正常情况,所以不便于也不需要捕获,如:OutOfMemoryError

不要捕获通用异常,要捕获特定异常:

try{
//todo
Thread.sleep(1000L)
}catch(Exception e){
//todo
}

改为

try{
//todo
Thread.sleep(1000L)
}catch(InterruptedExcetion e){
//todo
}

NoClassDefFoundError和ClassNotFoundException有什么区别:

异常类型 ClassNotFoundException NoClassDefFoundError
继承模型 从java.lang.Exception继承,是一个Exception类型 从java.lang.Error继承,是一个Error类型
触发原因 当动态加载Class的时候找不到类会抛出该异常 程序在编译时可以找到所依赖的类,但是在运行时找不到指定的类文件,运行过程中Class找不到导致抛出该错误
触发主体 一般在执行Class.forName()、ClassLoader.loadClass()或ClassLoader.findSystemClass()的时候抛出 JVM或者ClassLoader实例尝试加载类的时候,找不到类的定义而发生,通常在import和new一个类的时候触发
处理方式 程序可以从Exception中恢复,ClassNotFoundException可由程序捕获和处理 程序无法从错误中恢复,Error是系统错误,用户无法处理
可能原因 要加载的类不存在;类名书写错误 jar包缺失;调用初始化失败的类

扩展阅读

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容