Java 日看一类(31)之IO包中的InvalidClassException异常类和IOError异常类

本文解析了InvalidClassException和IOError两个异常类。InvalidClassException在序列化过程中因版本不匹配、未知数据类型或构造函数问题而抛出。IOError则在出现严重IO错误时抛出。

InvalidClassException类无引入包

继承了ObjectStreamException



该类的类头注释如下:

/**
 * Thrown when the Serialization runtime detects one of the following
 * problems with a Class.
 * <UL>
 * <LI> The serial version of the class does not match that of the class
 *      descriptor read from the stream
 * <LI> The class contains unknown datatypes
 * <LI> The class does not have an accessible no-arg constructor
 * </UL>
 *
 * @author  unascribed
 * @since   JDK1.1
 */

大意如下:

当下列问题在序列化出现时该异常被抛出:

    序列化版本和从流中读取出类描述符的版本不匹配

    类包含了不知名的数据类型

    该类不含有可以无参数访问的构造函数



该类含有如下的成员变量:

序列化ID:

private static final long serialVersionUID = -4333316296251054416L;

无效的类型名

public String classname;



该类含有如下的成员方法:

构造函数(上传错误原因

public InvalidClassException(String reason) {
    super(reason);
}

构造函数(上传错误原因和错误类名

public InvalidClassException(String cname, String reason) {
    super(reason);
    classname = cname;
}

生成消息和类名(如果类名存在

public String getMessage() {
    if (classname == null)
        return super.getMessage();
    else
        return classname + "; " + super.getMessage();
}




该类和InvalidObjectException有一定的相似之处,也有一些不同(类和实例的错误不同),遇到时候请仔细分析



IOError无引入包

继承自Error类



该类的类头注释如下:

/**
 * Thrown when a serious I/O error has occurred.
 *
 * @author  Xueming Shen
 * @since   1.6
 */

大意如下:

当发生严重的IO错误时该类被抛出



该类含有如下的成员变量:

序列化ID:

private static final long serialVersionUID = 67100927991680413L;



该类含有如下的成员方法:

构造函数构造带有指定 cause 的新 IOError 实例。IOError 是使用详细消息 (cause==null ? null :cause.toString())(它通常包含 cause 的类和详细消息)创建的):

public IOError(Throwable cause) {
    super(cause);
}


该类被抛出的时候一般意味着出了比较大的问题,注意抛出时候的注释

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值