java - 关于try-with-resources语句的查询

标签 java resources try-catch

只是确认以下内容无法编译,这不是我的错误:

try(Files.newBufferedWriter(Paths.get("/home/user/Desktop/TryItOutMan.txt"), Charset.defaultCharset())
        {
        }
        catch(IOException io){io.printStackTrace();}

但是以下编译:

try(BufferedWriter bw =Files.newBufferedWriter(Paths.get("/home/user/Desktop/TryItOutMan.txt"), Charset.defaultCharset())
        {
        }
        catch(IOException io){io.printStackTrace();}

编译器似乎检查了在 try-catch-with-resources 语句中声明的类是否实现了 AutoClosable... 但是它本来可以工作,因为该方法返回一个 BufferedWriter 实现了 AutoClosable

只是要求确认

try(Files.newBufferedWriter(Paths.get("/home/user/Desktop/TryItOutMan.txt"), Charset.defaultCharset())

不编译。

提前致谢。

最佳答案

如果您查看 try-with-resources in the JLS 的语法定义,您会看到它需要一个变量名。所以它必须看起来像:

try (SomeType variable = xxx;)

关于java - 关于try-with-resources语句的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18053849/

相关文章:

java - 从 http 到 https

java - Android Intent 安全

java - Spring MVC Web应用程序-Model的正确使用

java - 递归验证字符串是否是有效的前缀表达式?

javascript - 如何将资源中的正则表达式模式插入到 string.Format 中?

Jenkins 管道 : Try/catch inside a retry block

java - 避免索引越界异常

delphi - 如何使用Delphi从另一个文件的资源加载单个图标?

Android-重复 fragment 交易和手机资源(复杂)

java - try catch 和 if else 子句中的 return 语句