Why can't Java Lambda throw an checked exception

465 views Asked by At

I'm learning Java and am a bit confused, why Lambda Expressions can't throw checked exceptions. Anyone has an understandable explanation for this?

I read through this post: Java 8 Lambda function that throws exception? and this one: java throwing checked exceptions? but both werent helping me. I also read multiple articles on google, but they all say that its not possible, but not why.

1

There are 1 answers

0
matt On BEST ANSWER

It's pretty much a method. If the method signature is declared to throw a checked exception, then a checked exception can be thrown inside of the lambda.

Imagine if you could.

Runnable r = ()->{ throw new CheckedException();};

Now our imaginary runnable.run can be called, but the caller will not know it has to handle a checked exception.

Callable on the other hand does throw an Exception.

Callable c = ()->{ throw new CheckedException();};

This works fine, because Callable.call is declared to throw an exception. You don't know the specific type of exception, but you have to handle one.