一、Lambda表达式和栈跟踪
当我们使用p -> p.getX()
来返回函数时,如果代码抛出异常,那么异常栈就无法知道异常抛出行数等信息,即使使用stream.map(OuterClass::method)
也无法打印出详细的异常信息。
解决方法是在当前类中一个静态方法,然后引入lambda表达式Class.staticMethod
即可打印日志
stream流式Api使用时,每个方法调用都要换行,否则无法定位具体异常行
二、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());