打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Java中Error和Exception的异同

Error(错误)和Exception(异常)都是java.lang.Throwable类的子类,在Java代码中只有继承了Throwable类的实例才能被throw或者catch。

    Exception和Error体现了Java平台设计者对不同异常情况的分类,Exception是程序正常运行过程中可以预料到的意外情况,并且应该被开发者捕获,进行相应的处理。Error是指正常情况下不大可能出现的情况,绝大部分的Error都会导致程序处于非正常、不可恢复状态。所以不需要被开发者捕获。

    Error错误是任何处理技术都无法恢复的情况,肯定会导致程序非正常终止。并且Error错误属于未检查类型,大多数发生在运行时。Exception又分为可检查(checked)异常和不检查(unchecked)异常,可检查异常在源码里必须显示的进行捕获处理,这里是编译期检查的一部分。不检查异常就是所谓的运行时异常,通常是可以编码避免的逻辑错误,具体根据需要来判断是否需要捕获,并不会在编译器强制要求。

    如下是常见的Error和Exception:

    1)运行时异常(RuntimeException):

    NullPropagation:空指针异常;

    ClassCastException:类型强制转换异常

    IllegalArgumentException:传递非法参数异常

    IndexOutOfBoundsException:下标越界异常

    NumberFormatException:数字格式异常

    2)非运行时异常:

    ClassNotFoundException:找不到指定class的异常

    IOException:IO操作异常

    3)错误(Error):

    NoClassDefFoundError:找不到class定义异常

    StackOverflowError:深递归导致栈被耗尽而抛出的异常

    OutOfMemoryError:内存溢出异常

    例1

    下面代码会导致Java堆栈溢出错误。

// 通过无限递归演示堆栈溢出错误class StackOverflow { public static void test(int i) {  if (i == 0) {   return;
  } else {
   test(i++);
  }
 }
}public class ErrorEg { public static void main(String[] args) {  // 执行StackOverflow方法
  StackOverflow.test(5);
 }
}1234567891011121314151617复制代码类型:[java]

    运行输出为:

Exception in thread "main" java.lang.StackOverflowError
 at ch11.StackOverflow.test(ErrorEg.java:9)
 at ch11.StackOverflow.test(ErrorEg.java:9)
 at ch11.StackOverflow.test(ErrorEg.java:9)
 at ch11.StackOverflow.test(ErrorEg.java:9)12345复制代码类型:[java]

    上面代码通过无限递归调用最终引发了java.lang.StackOverflowError错误。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
error与exception的区别以及运行时异常与一般异常的区别
一张图搞清楚Java异常机制
web.xml 错误跳转处理
java中Error和Exception用法上有什么区别,Error是怎么回事?
Android开发中StackOverflowError错误实例分析
git 出现 error Missing tree 的处理办法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服