methods that throws checked exceptions in a lambda block
Paul Sandoz
paul.sandoz at oracle.com
Wed Feb 12 16:48:40 UTC 2014
On Feb 12, 2014, at 4:05 PM, Wang Weijun <weijun.wang at oracle.com> wrote:
> This line does not compile
>
> Files.list(Paths.get("/secret")).forEach(x -> Files.write(x, new byte[Files.size(x)]);
>
> because Files.write() and Files.size() throw IOE. Then what's the best way to make it work?
>
It depends...
Sometimes i will shuffle things under a method (static one if there are no captures and use a method ref).
If i get *really* fed up i have been know to write stuff like the following:
private static interface S<T, E extends IOException> {
T apply() throws E;
}
private static <T, E extends IOException> T r(S<T, E> s) {
try {
return s.apply();
}
catch (IOException t) {
throw new UncheckedIOException(t);
}
}
Paul.
> (I find some old threads on this on lambda-dev. Maybe we have a recommended way now?)
>
More information about the core-libs-dev
mailing list