java8 lambda表达式实现异常捕获
时间: 2023-07-07 12:34:53 浏览: 56
在 Java 8 中,可以使用 Lambda 表达式和方法引用来实现优雅的异常捕获。例如:
```
someList.stream()
.filter(element -> {
try {
// some code that may throw an exception
} catch (Exception e) {
// handle the exception
return false;
}
return true;
})
.forEach(System.out::println);
```
在上面的代码中,我们使用了 Lambda 表达式作为 Filter 的参数,然后在 Lambda 表达式中使用 try-catch 块来捕获异常。如果出现异常,我们可以在 catch 块中处理异常,并返回 false,以从列表中过滤掉这个元素。如果没有异常,我们返回 true,表示要保留这个元素。
另外,还可以使用 Lambda 表达式和 Supplier 接口来实现优雅的异常捕获。例如:
```
someList.stream()
.map(element -> {
try {
// some code that may throw an exception
return someResult;
} catch (Exception e) {
// handle the exception
return null;
}
})
.filter(Objects::nonNull)
.forEach(System.out::println);
```
在上面的代码中,我们使用了 Lambda 表达式作为 Map 的参数,然后在 Lambda 表达式中使用 try-catch 块来捕获异常。如果出现异常,我们可以在 catch 块中处理异常,并返回 null,表示这个元素不能被映射。如果没有异常,我们返回映射的结果。然后使用 filter 方法过滤掉 null 值的结果,最后使用 forEach 方法打印结果。