Java常见异常

面试中经常会被问到一个“小”问题,就是“你能说出来5个常见的Java异常吗”?之所以“小”字加了引号,是因为其实这个问题看似简单,但是却很考验你的技术功底和平时的编码难易程度。

首先,来一个大家都能直接想到的回答:

  1. NullPointerException
  2. ClassCastException
  3. ArrayIndexOutOfBoundsException
  4. NumberFormatException
  5. IOException

具体异常是什么意思和在什么场景下会出现,我在这里就不展开说了,毕竟这都是最最最基本的回答了。

今天我要给你带来的是一些不一样的回答,立马让你显得高大上,让面试官对你刮目相看。

  1. java.lang.StackOverflowError

    栈内存溢出,一般方法递归调用的时候会出现该异常,递归的时候没有正确的结束递归调用,就会导致栈被打满,最后抛出该异常

  2. java.lang.OutOfMemoryError:Java heap space

    堆内存溢出,当老年代对象过多,或者存在大对象的时候出现

  3. java.lang.OutOfMemoryError:GC overhead limit exceeded

    GC花费超过98%的时间,只回收了不到2%的内存,如果不抛出异常,则会一直进行GC,占用cpu使用,还没有效果,这个时候就会抛出该异常

  4. java.lang.OutOfMemoryError:Direct buffer memory

    使用了大量的本地内存(本地内存默认是电脑内存的1/4),而本地内存不受GC限制,则会出现内存溢出,当使用NIO的ByteBuffer读取数据的时候可能会出现(Buffer.allocateDirect(capability))

  5. java.lang.OutOfMemoryError:unable to create new native thread

    创建了太多的线程,linux服务器中默认单个进程最多创建1024个线程

  6. java.lang.OutOfMemoryError :Metaspace

    1.8中元空间是方法区的实现,不断创建新的类就会溢出

  7. java.util.ConcurrentModificationException

    并发修改异常,hashmap当同时操作修改时就会出现该问题

看看,上面的几个异常是不是显得“高大上”不少了,下次面试官再问你的时候,不要再回答那些“烂大街”的了,试试上边那几个,面试官会对你刮目相看的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值