methods that throws checked exceptions in a lambda block

Remi Forax forax at
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:

and rewrite your code like this:
Files.list(Paths.get("/secret")).forEach(unsafeProc(x -> Files.write(x, 
new byte[Files.size(x)]));


More information about the core-libs-dev mailing list