' remote ' 例外のいずれかを検討してください:
javax.jms.JMSException
または両方とも、詳細またはリンクされた例外プロパティjava.rmi.RemoteException
を持つために、例外連鎖の一般的なパターンから除外します。
この例外のいずれかを含むスタック トレースを出力すると、トリミングされたスタック トレースが得られます。完全なスタック トレースを取得するには、タンバリンでさらに踊る必要があります。
リモート例外がこのように設計される 理由は何ですか?
編集:
Java 1.6.0_26 のソースを閲覧しています。の2 つの引数コンストラクタpublic RemoteException(String s, Throwable cause)
を見てくださいjava.rmi.RemoteException
。次のコードが表示されますinitCause(null); // Disallow subsequent initCause
。これは、Java SE 6 でそれを行うための意図的な決定のようです。
しかし、一般的な慣行 によれば、例外チェーンinitCause()
を構築することは壮大な目的です!
ソースは覚えていませんが、カスタム例外を作成するベスト プラクティスについては自信があります
。1.スーパー
クラスのすべてのコンストラクターを公開します。これは、スーパー コンストラクターを呼び出すことで簡単に実現できます。Throwable.initCause()
ありがとう。