为什么我的exception类需要序列化?

当你用类Exception(用于创build新的exception)扩展一个类时,你会得到一个警告,要有一个serialVersionUID。 我知道serialVersionUID在序列化和反序列化中起着重要的作用,但是当我的exception需要被序列化时呢? 任何人都可以给我一个实例,我想我的自定义exception类有序列化和反序列化?

这是因为所有exception的根类Throwable实现了Serializable接口。 默认情况下,所有的exception都是可序列化的,这是一个语言devise决定,因为作者希望exception能够在没有任何特殊configuration的情况下通过线路发送。

如果基类不是可序列化的,那么在远程方法失败的情况下,您将难以传达出错的地方,因为您无法控制内置的exceptiontypes。

如果您的自定义exception曾经在分布式应用程序(使用RMI,Spring http-invoker等)中使用,并且可以从远程客户端调用的服务器方法中引发,那么必须将exception序列化以跨越线路并去客户端。

您唯一的select是为您定义的每个Exceptiontypes定义serialVersionUID (IDE可以为您生成)或禁止警告。

你可能会发现我以前的问题显式serialVersionUID被认为是有害的? 相关。