Home >Java >javaTutorial >How to Handle Checked Exceptions in Java 8 Lambda Expressions?
Lambda Functions with Exceptions in Java 8
In Java 8, lambda functions can be used to reference methods with specific signatures. However, when the referenced method declares a checked exception, defining the lambda reference can be challenging.
Problem
Consider the following method which takes a String as an argument and returns an Integer, but may throw an IOException:
Integer myMethod(String s) throws IOException
How do we define a lambda reference to this method?
Solution
There are two main approaches for handling exceptions in lambda references:
1. Custom Functional Interface
If you have control over the code, you can define a custom functional interface that declares the checked exception:
@FunctionalInterface public interface CheckedFunction<T, R> { R apply(T t) throws IOException; }
This allows you to create references to methods that throw checked exceptions:
void foo (CheckedFunction f) { ... }
2. Wrapping in a Non-Checked Method
If altering the method signature is not an option, you can wrap the checked method in a method that doesn't declare a checked exception:
public Integer myWrappedMethod(String s) { try { return myMethod(s); } catch(IOException e) { throw new UncheckedIOException(e); } }
You can then reference the wrapped method:
Function<String, Integer> f = (String t) -> myWrappedMethod(t);
The above is the detailed content of How to Handle Checked Exceptions in Java 8 Lambda Expressions?. For more information, please follow other related articles on the PHP Chinese website!