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