明示的に(実行時以外の)例外をスローするクラスと、本体がスローする(実行時以外の)例外のみを取得する方法はありますか?コール可能なJava汎用例外
public interface Throw1Callable<T, E extends Exception> {
public T call() throws E;
}
この方法では、コールが呼び出されたとき、あなたは例外を処理するために持っているだけではなくRuntimeExceptionsを処理する必要が及びません。
は、私は次のように、例外の固定数でこれを行う方法を知っていますE.しかし、これはまったく変わりません。私は2つの例外のためにこれをやりたければ、Throw2Callableなどの新しいクラスを作成する必要があります。Java(おそらくすべての言語)には、ジェネリックの可変数や何か役立つかもしれない種類のものはありません。
上記をカプセル化する良い方法はありますか?
説明のために編集:A.aがIOExceptionをスローするとしましょう。私は((Throw1Callable)() -> A.a()).call()
を実行し、ExceptionをキャッチするのではなくIOExceptionだけを捕捉できるようにしたいと思います。 ((Callable)() -> A.a()).call()
はIOExceptionの代わりに例外をスローします。
'(ランタイムではない)例外を明示的にスローするクラスを取得することはどういう意味ですか。 Exceptionをスローできるメソッドを作成したいですか? – Andreas
わかりやすくするためにいくつか追加しました。つまり、本体がIOExceptionのような例外をスローすると、.callはExceptionの代わりにIOExceptionだけをスローする必要があります。 –