Java 8 Stream提供了一种简单而强大的方式来处理集合和数组中的元素。在Stream中使用forEach()方法可以对每个元素执行一个操作,但是在使用forEach()时,如果操作抛出异常,那么程序就会终止。为了避免这种情况,我们需要添加异常处理。
可以通过将操作包装在一个try-catch块中来处理异常。例如:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.stream().forEach(number -> {
try {
// 执行操作
int result = 100 / (number - 3);
System.out.println(result);
} catch (ArithmeticException e) {
// 处理异常
System.err.println("Arithmetic Exception: " + e.getMessage());
在上面的示例中,如果在执行操作时出现ArithmeticException异常,程序将打印异常信息并继续执行操作。您可以使用其他类型的异常,如RuntimeException,来捕获其他类型的异常。
除了在操作中处理异常外,您还可以使用Stream的forEach()方法的重载版本forEach(Consumer<? super T> action),该方法将一个Consumer作为参数,并在其中捕获异常。例如:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.stream().forEach(number -> {
// 执行操作
int result = 100 / (number - 3);
System.out.println(result);
}, e -> {
// 处理异常
System.err.println("Exception: " + e.getMessage());
在上面的示例中,如果在执行操作时出现异常,程序将打印异常信息并继续执行操作。该方法的第二个参数是一个Consumer对象,它会在操作抛出异常时被调用。
总之,在使用Java 8 Stream的forEach()方法时,为了避免异常导致程序终止,您需要添加异常处理。可以使用try-catch块在操作中处理异常,或者使用Stream的forEach()方法的重载版本并在其中捕获异常。