amo*_*mod 43 java serialization exception serialversionuid deserialization
当你使用类Exception扩展一个类(用于创建新的异常)时,你会得到一个警告serialVersionUID.我知道serialVersionUID在序列化和反序列化时它起着重要作用,但是当我的异常需要被序列化时?任何人都可以给我一个实际案例,我希望我的自定义异常类具有序列化和反序列化?
San*_*rma 55
这是因为所有异常的根类都Throwable实现了Serializable接口.默认情况下,所有异常都是可序列化的,这是一种语言设计决策,因为作者希望异常能够在没有任何特殊配置的情况下通过线路发送.
如果基类不可序列化,那么在远程方法失败的情况下,您将难以传达出现了什么问题,因为您无法控制内置的异常类型.
JB *_*zet 12
如果您的自定义异常曾在分布式应用程序中使用(使用RMI,Spring http-invoker等),并且可以从远程客户端调用的服务器方法抛出,那么异常必须序列化以跨越线路并去客户端.
您唯一的选择是为您定义serialVersionUID的每个Exception类型定义(IDE 可以为您生成它)或取消警告。
您可能会发现我之前的问题明确的 serialVersionUID 被认为是有害的?相关的。