图灵学院java架构师-vip-【java.io.EOFException异常的讲解】
大家在使用序列化对象读取的时候会遇见这个异常,大多数读者会上网查询这个异常的信息,这次咱们从源码出发解读这个异常(要注意的是源码切记不要一行一行读不然会晕的)。
1.首先从方法进去
2.找到返回的object的继续进去
3.找到流读取数据的这两个都可以进去,我们发现了我们所找的异常是自定义的异常EOF,咱们再继续跟进看下什么情况下会报这个异常
4.进来之后 上面那个看不懂的话没关系,咱看下面那个点进去
5.前面条件是false会走后面的peekb = in.read(),这个in就是初始化对象的时候穿进去的输入流,大家在学习io流的api的时候在调用read()的时候,当没有数据的话,会返回-1.根据上面的判断返回的是个负数,所以会抛出异常if (val < 0) { throw new EOFException(); }。
6.总结EOFException异常为:已经读取完数据了或者根本就没有数据会抛出这个异常,这个异常不是程序错误的异常而是一种提示作用的异常,需要开发人员根据情况抓取异常或者抛出异常。