Spring/JAVA

[Java8 Lambda] Exception Handling in Lambdas (try - catch)

alsruds 2023. 10. 13. 17:14
🤹‍♂️Java Brains 강의🤹‍♂️

https://www.youtube.com/playlist?list=PLqq-6Pq4lTTa9YGfyhyW2CqdtW9RtY-I3

 

💡 someNumbers 배열 원소들을 key 값으로 나눈 나머지 출력하기 💡

 

· key 값이 2일 때 출력 (정상)

 

· key 값이 0일 때 출력 (예외 상황)

 

· Code

import java.util.function.BiConsumer;

public class Main {
    public static void main(String[] args) {
        int[] someNumbers = {1,2,3,4};
        int key = 2;

        process(someNumbers, key, wrapperLambda((v, k) -> System.out.println(v / k)));
    }

    private static void process(int[] someNumbers, int key, BiConsumer<Integer, Integer> consumer) {
        for (int i : someNumbers) {
            consumer.accept(i, key);
        }
    }

    // 예외 상황 처리
    private static BiConsumer<Integer, Integer> wrapperLambda(BiConsumer<Integer, Integer> consumer) {
        return (v, k) -> {
            try {
                consumer.accept(v, k);
            } catch (ArithmeticException e) {
                System.out.println("Exception caught in wrapper lambda");
            }
        };
    }
}