java 8 lanmda表达式

本文讨论了在使用Java 8 Lambda表达式时遇到的受检异常问题,提出了两种解决方案:1) 创建新方法处理异常;2) 使用自定义FunctionInterface包装异常。作者更倾向于使用包装默认值的方法,认为它更通用且能提高代码可读性。对于Java中的受检异常,作者持批判态度,认为其增加了编码复杂性和降低了代码可读性。
摘要由CSDN通过智能技术生成

我今天高高兴兴,想写个简单的统计一个项目下有多少行代码的小程序,于是咔咔的写下:

long count = Files.walk(Paths.get("D:/Test"))                      // 获得项目目录下的所有目录及文件
                .filter(file -> !Files.isDirectory(file))          // 筛选出文件
                .filter(file -> file.toString().endsWith(".java")) // 筛选出 java 文件
                .flatMap(file -> Files.lines(file))                // 按行获得文件中的文本
                .filter(line -> !line.trim().isEmpty())            // 过滤掉空行
                .count();

System.out.println("代码行数:" + count);

然后,编译不过 —— 因为 Files.lines(Path) 会抛出 IOException,如果要编译通过,得这样写:

long count = Files.walk(Paths.get("D:/Test"))              // 获得项目目录下的所有文件
        .filter(file -> !Files.isDirectory(file))          // 筛选出文件
        .filter(file -> file.toString().endsWith(".java")) // 筛选出 java 文件
        .flatMap(file -> {
            try {
                return Files.lines(file);
            } catch (IOException ex) {
                ex.printStackTrace(System.err);
                return Stream.empty();                     // 抛出异常时返回一个空的 Stream
            }
        })                                                 // 按行获得文件中的文本
        .filter(line -> !line.trim().isEmpty())            // 过滤
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值