私は(いくつかのより多くのネストされたforEach's
とstreams
で)いくつかのコードを持っている:ブロック外でforeachのコンシューマからRuntimeExceptionをキャッチする方法はありますか?
void process() throws RuntimeException
{
try {
ArrayList<Integer> ints = new ArrayList<>();
ints.add(1);
ints.add(2);
ints.add(3);
ints.forEach(e -> {
System.out.println(e);
throw new RuntimeException("RuntimeException");
});
}
catch (RuntimeException rex)
{
rex.printStackTrace();
throw rex; // throw it up, and up, and up...
}
}
foreach's
Consumer's
accept()
は、デフォルトでは、例外をスローしませんので、それは動作しません。もしそれがthrows
の署名を持っていたとしても、私はブロックの外にそれを捕まえることができませんでした。
私がする必要があるのは、foreach()
メソッド自体から例外をキャッチすることです。
は、私はその
void handleException(RuntimeException ex){ ... }
、すべてのforEach()'s
のtry/catchでそれを呼び出すようないくつかの外部メソッドずに達成できる方法はありますか?
あなたはあなたの実際のコードを表示する必要があり、これは設計上の問題のように聞こえます。 – Kayaman
例外をスローする[Java 8 Lambda関数]の複製がありますか?(https://stackoverflow.com/questions/18198176/java-8-lambda-function-that-throws-exception) –
このコードは 'RuntimeException' – Jerry06