当前位置: 首页 > 知识库问答 >
问题:

Java 编译器抱怨未报告的 IOException

武卓
2023-03-14

我正在尝试编写一个列出目录中所有非隐藏文件的方法。但是,当我添加条件时!Files.isHidden(filePath) 我的代码无法编译,编译器返回以下错误:

java.lang.RuntimeException: Uncompilable source code - unreported exception 
java.io.IOException; must be caught or declared to be thrown

我试图捕捉< code>IOException,但是编译器仍然拒绝编译我的代码。我遗漏了什么明显的东西吗?代码如下所示。

try {    
    Files.walk(Paths.get(root)).forEach(filePath -> {
        if (Files.isRegularFile(filePath) && !Files.isHidden(filePath)) {
            System.out.println(filePath);            
        } });
} catch(IOException ex) {    
  ex.printStackTrace(); 
} catch(Exception ex) {   
  ex.printStackTrace(); 
}

共有2个答案

轩辕华辉
2023-03-14

isHiddenFile() 抛出一个 IOException,而你没有抓住它。实际上,forEach() 将 Consumer 作为参数,Consumer.accept() 不能引发任何已检查的异常。因此,您需要通过传递给 forEach() 的 lambda 表达式来捕获内部的异常:

Files.walk(Paths.get(root)).forEach(filePath -> {
    try {
        if (Files.isRegularFile(filePath) && !Files.isHidden(filePath)) {
            System.out.println(filePath);            
        } 
    }
    catch (IOException e) {
         // do something here
    }
});
章青青
2023-03-14

传递给< code>Iterable#forEach的lambda表达式不允许抛出异常,因此您需要在那里处理它:

Files.walk(Paths.get(root)).forEach(filePath -> {
    try {
        if (Files.isRegularFile(filePath) && !Files.isHidden(filePath)) {
            System.out.println(filePath);
        }
    } catch (IOException e) {
        e.printStackTrace(); // Or something more intelligent
    }
});
 类似资料:
  • 问题内容: 我下面这个线程,这一个建立自己的KDE没有须藤权限。由于没有在工作站上安装Git和CMake。我只是将它们都安装在 / home / <用户>下,并将 / home / <用户> / bin和 / home / <用户> / lib添加 到PATH和LD_LIBRARY_PATH中。由于KDE构建仅支持CMake,因此不进行配置。因此,我必须通过CMake设置前缀,如下所示:。在这一点

  • 问题内容: 游乐场执行失败:MyPlayground.playground:109:22:错误:无效使用’()’调用非函数类型’[ClassA.ClassB.Type]’的值时,让didNotCompile = ClassA.ClassB ^ ~~ 问题答案: 如您所述,它可以使用以下语法: 但是,如果我们声明一个: 因此,我想说这是一个错误,也应该无需输入别名即可工作。 更新 :Apple 已经

  • 在F#中,我试图编写一个函数,给定两个字符串,它将返回第一个字符串中第二个字符串开头的所有索引。我的函数看起来像这样: 问题是在线

  • 是否可以指定文件中的字符串在

  • 问题内容: 在Java的for-each循环中使用泛型时,出现一个奇怪的编译器错误。这是Java编译器错误,还是我真的在这里遗漏了什么? 这是我全班的: 编译器抱怨for-each所在的行:“类型不匹配无法从元素类型Object转换为String。” 如果我进行了微妙的更改,它将编译为: 我知道确实使用泛型,但是我以完全不相关的方式使用它们。如果我尝试遍历T类型的某些内容并返回a 或某种内容,我可