現在作業中のコードベースである例外の混乱をクリーンアップしようとしています。
基本的な設定はこちらです。
私は次のような多くのクラスによって実装されるインターフェースを持っています:
public interface TerminalMessage<E> {
// Override for specific return data type.
public E send(TerminalStream stream) throws Exception;
}
これらのクラスは、IOException、InterruptedExceptionなどの多くの異なる例外をスローします。
今のところ、キャッチされた例外に対してgetMessage()を呼び出し、このメッセージをuiコードに中継するだけです。
ユーザーに偽のメッセージが表示されたり、不要な例外が発生したりすることがあるため、これはあまり便利ではありません。
これらすべての種類の例外をラップするカスタム例外クラス(TerminalException)を作成することを考えています。
ただし、ラッピングを実行する場所がわかりません。例外が最初にスローされる場所(たとえば、出力ストリーム)またはすべてのsend()メソッドでラッピングを実行する必要があります。前者には多くのコードを追加しないという利点がありますが、ストリームがTerminalExceptionではなくIOExceptionをスローする方が理にかなっています。
上記の設計では、ユーザーに表示されることがある悪いメッセージも実際には解決されないため、スローされた例外をユーザーにとって有用なものに変換する方法に関するヒントがあれば便利です。
ありがとう!