"イベント"(キー入力、画面更新など)内で例外を処理する方法について、もう一度意見を出したいと思います。この場合、私はイベント送信者を制御できます。"イベント"内のJava例外処理
そこでモジュールは(それがリスナーインターフェースを実装し、イベントの送信者に対して登録された)イベントを処理するように設定されている:
public void DefaultSet (CardData oldDefault, CardData newDefault)
{
}
イベントの送信者は単に:だから
for (Enumeration e = listeners.elements(); e.hasMoreElements();)
{
RetrieverListener thisListener = (RetrieverListener) e.nextElement();
thisListener.DefaultSet(oldDefault, newDefault);
}
受信機で問題が発生した場合:
例外に対処する必要がありますか?再送信し、送信者に何も返すことはありませんか?時には、リスナーは正しくエラーを処理するための "コンテキスト"を持っていない、そうですか?
例外をイベント送信モジュールに戻して、文書化された方法で処理することに悩まされていませんか?例えば"IOExceptionをスローするとリセットされます。"これは私が読んだjavadocsの非標準的なようです。
何か問題が発生したときに例外を無視してログに記録すればよいですか?&何もできません。
興味深いアーキテクチャと有用な答え、ありがとう!私の問題は、リスナーが常に物事を表示したり、ユーザーのフィードバックを提供したりすることではなく、イベントを使用して、例外を非常に強力にするトップダウンスタックアナロジーを歪ませることです(スタック内の適切なポイント、何かができる場所)。 とにかく、リスナーはエラーを処理しなければならないと思います。 –
リスナーがエラーを処理できるようにシステムを設計する必要があります。例外は、スタックをリスナーに巻き戻します。リスナーは、例外にどのように対処するかを知ることができないもの、Swingイベントディスパッチスレッドで呼び出されたボタン、JMSプロバイダのメッセージ配信スレッドなどによって呼び出されています。例外に賢明に反応するために必要なすべてのコンテキストを与えることができる場所と時間にリスナーをインスタンス化する必要があります。 – Nat