methods that throws checked exceptions in a lambda block
Remi Forax
forax at univ-mlv.fr
Wed Feb 12 23:50:06 UTC 2014
On 02/12/2014 05:36 PM, Henry Jen wrote:
>
> On 02/12/2014 07:05 AM, Wang Weijun 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?
>>
>> (I find some old threads on this on lambda-dev. Maybe we have a
>> recommended way now?)
>>
>
> I am not sure there is a "recommended" way. Depends on how you need to
> handle those exceptions, I'll put the lambda in a private function to
> take care those exception, and surpress them in a UncheckedIOException.
>
> Cheers,
> Henry
The other solution is to use wrappers like these ones:
https://github.com/forax/blog/blob/master/src/com/github/forax/blog/UnsafeIO.java
and rewrite your code like this:
Files.list(Paths.get("/secret")).forEach(unsafeProc(x -> Files.write(x,
new byte[Files.size(x)]));
cheers,
Rémi
More information about the core-libs-dev
mailing list