一、Lambda表达式和栈跟踪

当我们使用​​p -> p.getX()​​​来返回函数时,如果代码抛出异常,那么异常栈就无法知道异常抛出行数等信息,即使使用​​stream.map(OuterClass::method)​​也无法打印出详细的异常信息。

解决方法是在当前类中一个静态方法,然后引入lambda表达式​​Class.staticMethod​​即可打印日志

二、Lambda日志打印

Stream<Integer> numbers = Stream.of(1, 2, 3, 4, 5, 6);
List<Integer> result = numbers.stream()
.peek(x -> System.out.println("from stream: " + x))
.map(x -> x + 17)
.peek(x -> System.out.println("after map: " + x))
.filter(x -> x % 2 == 0)
.peek(x -> System.out.println("after filter: " + x))
.limit(3)
.peek(x -> System.out.println("after limit: " + x))
.collect(toList());