特定の名前の例外をスローしたいのですが、そのような例外はサイド パッケージに既に存在します。
例えば。UnexpectedException
_ java.rmi
rmi パッケージの機能は一切使用していませんが、例外の名前はまさに私が必要としているものです。
自分のコンテキストでその例外をスローするか、同じ名前で新しい例外を作成できます。どちらの方法が良いですか?
特定の名前の例外をスローしたいのですが、そのような例外はサイド パッケージに既に存在します。
例えば。UnexpectedException
_ java.rmi
rmi パッケージの機能は一切使用していませんが、例外の名前はまさに私が必要としているものです。
自分のコンテキストでその例外をスローするか、同じ名前で新しい例外を作成できます。どちらの方法が良いですか?
名前が正しいからといって、他のものが正しいというわけではありません。説明を見てください。たとえば、次のようになります。
リモート メソッド呼び出しのクライアントが呼び出しの結果として、リモート インターフェイスのメソッドの throws 句で宣言されたチェック済み例外の種類に含まれないチェック済み例外を受け取った場合、UnexpectedException がスローされます。
それは実際にあなたの例外が何を表現しようとしているのかを説明していますか? ないと思います。
あなたがクライアントだったと想像してみてください。RMI に関連するコードベースがないにもかかわらず、一体なぜ RMI に関係する何かをキャッチ(または宣言) しなければならないのか不思議に思うでしょう。奇妙さはコード全体に広がります。イク。
例外の完全修飾名を見ると、java.rmi
その名前の一部です。あなたのコードを読んで からの例外を期待するプログラマーを考えてみてくださいjava.rmi
。
特にこの例外を考慮すると、予期しないことは何ですか? 代わりにクラスに名前を付けてUnexpectedSomethingException
、何が起こっているのかを明確にすることができます。
@Jon Skeetと@akaIDIOTはすでにかなり良い回答を提供しています。あなたの質問に関連するいくつかの例を追加します。
java.rmi.UnexpectedException
RMI とは関係のないメソッドから処理するのは奇妙で紛らわしいでしょう。
また、例外の主な目的は、自分では処理できなかった状況をクライアント コードで処理できるようにすることです。したがって、メソッドがスローされるという事実はjava.io.IOException
、クライアント コードが予期しないファイルの入出力エラーを処理する責任を負う必要があることを意味します (ファイルのアクセス/存在、基本設定を再確認します)。メソッドのスローjava.rmi.UnexpectedException
により、RMI 設定を確認するためのヒントがクライアント コードに与えられます
希望する名前を共有しているという事実だけに基づいて、別の例外を再利用しないことを強くお勧めします。たとえば、RMIのコンテキスト外でjava.rmi.UnexpectedExceptionをスローすると、非常に混乱します。
例外をどのように使用するのか正確にはわかりませんが、名前だけに基づいて、同じ一般的な意味を持つjava.lang.RuntimeExceptionを使用できるように思えます。
したがって、私の推奨事項は次の順序になります。