0

例外によるエラー処理のより良い方法を実装することを考えています。コードに深く入り込み、エラーを返したい場合、次の 2 つのオプションがあります。

  1. ランタイム例外を拡張する例外をスローします。
  2. 応答と共にエラー メッセージ オブジェクトを渡します。これにより、必要に応じて各レベルでエラー メッセージを確認してエラーを処理できます。

私は 1 が好きです。ただし、インターフェイスを作成するとします。

public interface Interface {
  method1();
  method2();
}

さて、このタイプのコントラクトでは、メソッドを次のように宣言するインターフェイスは見たことがありません。

method1() throws ExtendedRuntimeException;
method2() throws ExtendedRuntimeException;

実装が拡張ランタイム例外を処理する必要があることを指定するよりクリーンな方法は何ですか?

4

3 に答える 3

0

組み合わせたアプローチが必要です。アプリケーションで例外処理メカニズムを設計するときは、impl に例外を処理させるインターフェイスを設計する必要があります。これらはチェック例外です。

また、すべての例外を処理するレイヤー、または例外の処理方法を決定するレイヤーを事前に決定する必要があります。すべての下位レイヤーは例外を上に渡します。つまり、例外をバブルアップします。例外サブクラスを作成するか、単に例外をそのままスローすることでそれを行うことができます。エラーコード/メッセージなどの詳細を含む例外サブクラスを作成することをお勧めします。

そして、はい、多くの設計には、メソッド定義にスローが関連付けられているインターフェイスがあります。

HTH ~アユスマン

于 2012-04-19T22:20:34.007 に答える
0

Sudoer、私見では、インターフェイスの実装者がランタイム(別名未チェック)例外を処理することを制御できません。

@Ayusmanが述べたように、実装者がチェックされた例外を処理することを宣言して要求することができますが、ランタイム例外の場合、宣言する必要はありません。また、実装者としてのチェックされていない例外については、インターフェイス デザイナーとして宣言していない独自のランタイム例外をスローできます。

これは、コントラクトのみを宣言するためです。ただし、どのような種類の実行時例外が発生する可能性があるかについて十分なコンテキストが得られないためです。ここでその思いを伝えることができれば幸いです。

これらは便利だと思いました:

それが役立つことを願っています。

于 2012-04-19T22:43:24.550 に答える
0

例外エラー処理には多くの流派があります。長いが非常に有益な記事がここにあります: http://articles.vconst.com/2009/08/error-handling-and-exceptions-in-java.html

彼は実際に、実行時例外の throws 宣言を入れることを提案しています。

于 2012-04-19T22:55:24.057 に答える