クラス Exception (新しい例外を作成するため) を使用してクラスを拡張すると、serialVersionUID
. シリアル化と逆シリアル化の際に重要な役割を果たすことは知っていserialVersionUID
ますが、いつ例外をシリアル化する必要がありますか? カスタム例外クラスにシリアライゼーションとデシリアライゼーションを持たせたい実用的なケースを誰か教えてもらえますか?
25020 次
3 に答える
64
これは、すべての例外のルート クラスがインターフェイスをThrowable
実装しているためです。Serializable
デフォルトではすべての例外はシリアル化可能であり、これは言語設計上の決定です。作成者は、特別な構成なしでネットワーク経由で例外を送信できるようにしたかったからです。
基本クラスがシリアライズ可能でない場合、組み込みの例外タイプを制御できないため、リモート メソッドが失敗した場合に正確に何が問題なのかを伝えるのが困難になります。
于 2011-10-07T06:34:40.587 に答える
14
カスタム例外が分散アプリケーション (RMI、Spring http-invoker などを使用) で使用され、リモート クライアントから呼び出されたサーバー メソッドからスローされる可能性がある場合は、例外をシリアル化してネットワークを通過する必要があります。そしてクライアントに行きます。
于 2011-10-07T06:40:27.920 に答える
5
唯一のオプションは、定義serialVersionUID
するすべてのException
型を定義するか (IDE で生成できます)、警告を抑制することです。
于 2011-10-07T06:43:12.060 に答える