java 异常层次结构_Java 常见异常及层次结构

1.ConcurrentModificationException出现场景:同时对容器进行遍历和修改时会抛出该异常

Fixed方法:使用CopyOnWriteArrayList等免锁容器或避免同时读写容器

2.InterruptException出现场景:在调用了Thread.interrupt()或ExecutorService.shutdownNow()后线程正在sleep0者执行其他阻塞操作的时候,I/O操作除外。(ExecutorService.shutdown()不是打断sleep)

Fixed方法:不需要fixed,被打断是正常行为。

3.OutOfMemeoryError出现场景:内存不足错误。当可用内存不足以让Java虚拟机分配给一个对象时抛出该错误。

Fixed方法:首先确定是哪个部分溢出:分为Java heap space(堆溢出)  和  PermGen space(永久保存区,这部分区域不会被GC回收)。

永久区溢出可以通过调整JVM的 -XX:MaxPermSize 来调整。

堆溢出可以通过调整JVM的启动参数 -Xmn、-Xms、-Xmx,一般-Xms和-Xmx不超过80%,-Xmn为-Xmx的1/4。

可以通过在JVM启动参数中添加-XX:+HeapDumpOnOutOfMemoryError来确保发生内存溢出时生成dump文件,然后使用Memory Analyze工具来分析dump文件。还可以使用实时分析工具Jprofile。

4.StackOverflowError出现场景:栈满了的时候就会抛出该异常。栈帧太多,也就是函数调用层级过多时就会出现此异常,检查是否有死递归的情况。比如定义了无限多个int变量,就会出此异常。

Fixed方法:调整JVM启动参数 -Xss 来进行栈大小的调整。

5.Classnotfoundexception没有找到加载的类时报错的。查看那个类在不在就知道了。

6.IOExceptionEOFException    当输入过程中意外到达文件或流的末尾时,抛出此异常

FileNotFoundException   文件不存在的时候抛出此异常

7.异常的层次结构Thorwable类所有异常和错误的超类,有两个子类Error和Exception,分别表示错误和异常。

其中异常类Exception又分为运行时异常(RuntimeException)和非运行时异常,又叫非检查异常和检查异常。

运行时异常包含:ClassCaseException,NullPointException,IndexOutOfBoundsException等。

非运行时异常包含:IOException,ClassNotFounException,InterruptException等。

Error包含:OutOfMemoryError、StackOverFlowError、ThreadDeath等比较严重的系统级别错误,Error一般会导致系统挂掉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值