Loading

1_Error和Exception的区别

首先明确:两者都是继承自Throwable类,在java中,只有Throwable类型的实例才可以被抛出或者捕获

两者的区别

Error

1. Error是系统中的错误,程序员是不能改变和处理的;程序编译时出现的错误,只能通过修改程序才能修正
2. Error一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足
3. 对于error这类错误导致的应用程序终端,仅靠程序自身无法恢复和预防,遇到这样的错误,建议让程序终止

Exception

1. Exception表示程序可以处理的异常,可以捕获且可能恢复
2. 遇到这类异常,应该尽可能处理异常,使程序恢复运行,而不是随意种植异常

对于Exception,它又可以分为以下两类异常:CheckedException(检查异常)和RuntimeException(非检查异常)

编写程序如何处理好异常

  1. Throwable、Exception、Error的设计和分类,比如。掌握那些应用最为广泛的子类,以及如何自定义异常
  2. 理解java语言中操作Throwable的元素和实践

延申

NoClassDefFoundError和ClassNotFoundException有什么区别

首先,我们应该清楚:一个是error一个是exception,NoClassDefFoundError是jvm运行时通过classpath加载类是,找不到对应的类而抛出的错误。ClassNotFoundException是在编译过程中如果出现此异常,在编译过程中必须将ClassNotFoundException异常抛出

具体来说两者的发生场景有如下
NoClassDefFoundError

1. 类依赖class或者jar不存在
2. 类文件存在,但是存在不同的域中
3. 大小写问题,javac编译的时候是五十大小的,很有可能编译出来的class文件与想要的不一样
...

ClassNotFoundException

1. 调用class的forName方法时,找不到指定的类
2. ClassLoader中的findSystemClass()方法时,找不到指定的类
...
posted @ 2021-07-10 23:44  kevin_kay  阅读(289)  评论(0编辑  收藏  举报