美文网首页
Exception和Error有什么区别

Exception和Error有什么区别

作者: L_live | 来源:发表于2018-09-27 19:48 被阅读0次

    请对比Exception和Error,另外,运行时异常与一般异常有什么区别?

    Exception和Error

    Exception和Error都是继承了Throwable类,在Java中只有Throwable类型的实例才可以被throw或者catch,它是异常处理机制的基本组成类型。

    Exception和Error体现了Java平台设计者对不同异常情况的分类。Exception是程序正常运行中可以预料的意外情况,可以被捕获进行处理。Error指不大可能出现的情况,不需要捕获。

    运行时异常与一般异常的区别

    Exception可以分为checked异常(编译 期异常)和unchecked异常(运行时异常),编译期异常在源代码中必须显式地进行捕获处理,运行时异常不用必须捕获不在编译期强制要求,如NullPointerException、ArrayIndexOutOfBoundsException。

    1、尽量不要捕获类似Exception这样通用异常,而应该捕获特定异常。

    2、不要生吞异常,要处理或者抛出。

    3、在产品代码中,不允许在捕获异常之后printStackTrace(),因为在复杂系统中无法判断输出到哪里了,最好使用产品日志。

    4、Java异常处理机制有两个相对昂贵的地方:

       (1)try--catch 代码段会产生额外的性能开销,尽量不要一个大的try包裹整段代码

       (2)Java每实例化一个Exception都会对当时的栈进行快照,这是一个比较重的操作

    NoClassDefFoundError和ClassNotFoundException区别

    ClassNotFoundException产生的原因,Java支持使用Class.forName方法来动态加载类,如果这个类在路径中没有找到就会抛出ClassNotFoundException异常。

    NoClassDefFoundError产生的原因,JVM或者ClassLoader尝试加载类时找不到类的定义,原因可能是打包过程中漏掉了部分类或者jar包出现损坏,就会导致NoClassDefFoundError错误。

    相关文章

      网友评论

          本文标题:Exception和Error有什么区别

          本文链接:https://www.haomeiwen.com/subject/pdfyoftx.html